gpt4 book ai didi

php - 通过 PHP 访问 Twitter API

转载 作者:可可西里 更新时间:2023-11-01 13:31:14 27 4
gpt4 key购买 nike

我正在努力使我的脚本与 OAuth 而不是 Basic Auth 相结合,但我被卡住了。到目前为止,我目前只是在进行身份验证,但无法正常工作。这段代码:

<?php

include 'config.php';
include 'twitteroauth/twitteroauth.php';

// Use config.php credentials
$conn = new TwitterOAuth(CONSUMER_KEY,CONSUMER_SECRET);

// Use application's registered callback URL
// And get temporary credentials using made connection
$tempCred = $conn->getRequestToken();

// Use 'Sign in with Twitter'
// for Redirect URL
$rURL = $conn->getAuthorizeURL($tempCred);

echo '<a href="'.$rURL.'">1. Click me first!</a><br />';

工作正常。但是,当我完成这一步时:

  // Build a new TwitterOAuth connection
// Now that the app has verified credentials
$conn = new TwitterOAuth(CONSUMER_KEY,
CONSUMER_SECRET,
$_SESSION['oauth_token'],
$_SESSION['oauth_token_secret']);

// Get non-temporary credentials from Twitter
$tokenCred = $conn->getAccessToken();

echo '<a href="index.php">2. Click me next!</a><br />';

?>

我收到页面不可用,错误 324 (net::ERR_EMPTY_RESPONSE):未知错误。有人熟悉这个问题吗?我尽可能地密切关注文档,但由于我是一个完全的菜鸟,我确信我犯了一些愚蠢的错误。

此外,还有一个后续问题:一旦我通过此过程获得脚本授权,我下一步要获取 friend 提要 xml 的步骤是什么?我可以像以前一样 cURL 吗?

编辑:getAccessToken(); 的来源如下:

 function getAccessToken($oauth_verifier = FALSE) {
$parameters = array();
if (!empty($oauth_verifier)) {
$parameters['oauth_verifier'] = $oauth_verifier;
}
$request = $this->oAuthRequest($this->accessTokenURL(), 'GET', $parameters);
$token = OAuthUtil::parse_parameters($request);
$this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
return $token;
}

是的,config.php 是正确的。

最佳答案

我已将此 api 用于 Twitter 的基于 pin 的 oauth 身份验证。我使用了 php 简单的 oauth 库 http://php.net/manual/en/book.oauth.php .

如果你想看,这里是代码。



class TwitterPinBasedOauth{
private static $requestTokenUrl = 'http://twitter.com/oauth/request_token';
private static $accessTokenUrl = 'http://twitter.com/oauth/access_token';
private static $authorizeUrl = 'http://twitter.com/oauth/authorize';
private static $updateUrl = 'http://twitter.com/statuses/update.json';

private $twitterOauth;
public function __construct(){
$this->twitterOauth = new OAuth(ConsumerToken::$CONSUMER_KEY,
ConsumerToken::$CONSUMER_SECRET,
OAUTH_SIG_METHOD_HMACSHA1,
OAUTH_AUTH_TYPE_AUTHORIZATION);
}

public function getAndStoreRequestToken(){
$callbackUrl = "oob";
$response = $this->twitterOauth->getRequestToken(self::$requestTokenUrl, $callbackUrl);
print_r("REQUEST TOKEN:\n");
print_r($response);
print_r(PHP_EOL);
file_put_contents(Constants::$oauth_request_file, serialize($response));
echo "AUTH URL:\n".self::$authorizeUrl."?oauth_token=".$response['oauth_token'].PHP_EOL;
}
public function getAcessToken($pin){
$request_tokens = unserialize(file_get_contents(Constants::$oauth_request_file));
$this->twitterOauth->setToken($request_tokens["oauth_token"],$request_tokens["oauth_token_secret"]);
$response = $this->twitterOauth->getAccessToken(self::$accessTokenUrl, NULL, $pin);

file_put_contents(Constants::$oauth_access_file, serialize($response));

print_r("ACESS TOKEN:\n");
print_r($response);
print_r(PHP_EOL);
}
public function updateStatus($status){
try{
$access_tokens = unserialize(file_get_contents(Constants::$oauth_access_file));
$this->twitterOauth->setToken($access_tokens["oauth_token"],$access_tokens["oauth_token_secret"]);
$this->twitterOauth->fetch(self::$updateUrl,
array('status' => $status),
OAUTH_HTTP_METHOD_POST);
}
catch(OAuthException $e){
error_log($e->getMessage().PHP_EOL);
return intval($e->getCode());
}
}
}

关于php - 通过 PHP 访问 Twitter API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3437271/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com