【问题标题】:Twitter OAuth asks twice for confirmationTwitter OAuth 两次要求确认
【发布时间】:2013-03-23 00:50:18
【问题描述】:

我编写了一个脚本,请求 Twitter 授权。如果脚本第一次运行,它将被重定向到 Twitter,然后凭据将保存到 json 文件中。这行得通。但是来自twitter的授权页面将被加载两次。也许有人可以帮助我找到错误。这是脚本:

require('./vendor/autoload.php');

use TijsVerkoyen\Twitter\Twitter;

$twitter = new Twitter('xyz', 'xyz');
$response = $twitter->oAuthRequestToken('http://localhost:8888/tweeted-news/oauth-test.php');

$credentials = json_decode(file_get_contents('credentials.json'), true);

if (!isset($credentials['oauth_token'])) {
    $response = $twitter->oAuthAuthorize($response['oauth_token']);
    $response = $twitter->oAuthAccessToken($_GET['oauth_token'], $_GET['oauth_verifier']);
    file_put_contents('credentials.json', json_encode($response));
    var_dump('authorized');
} else {
    $twitter->setOAuthToken($credentials['oauth_token']);
    $twitter->setOAuthTokenSecret($credentials['oauth_token_secret']);
    var_dump('credentials');
}

var_dump($twitter->accountSettings());

我正在将这个库 https://github.com/tijsverkoyen/TwitterOAuth 与作曲家一起使用。非常感谢。

【问题讨论】:

    标签: php oauth twitter


    【解决方案1】:

    删除 else 行。在 var_dump('authorized') 之后,您应该设置 OAuthToken 和 OAuthTokenSecret。所以代码应该是:

    if (!isset($credentials['oauth_token'])) {
        $response = $twitter->oAuthAuthorize($response['oauth_token']);
        $response = $twitter->oAuthAccessToken($_GET['oauth_token'], $_GET['oauth_verifier']);
        file_put_contents('credentials.json', json_encode($response));
        var_dump('authorized');
        $twitter->setOAuthToken($credentials['oauth_token']);
        $twitter->setOAuthTokenSecret($credentials['oauth_token_secret']);
        var_dump('credentials');
    }
    

    【讨论】:

    • 我明白,但我想我也必须检查 $_GET 参数谢谢
    • 是的。我在代码中有点粗心。您应该在调用 oAuthAuthorize 和 OAuthAccessToken 之后检查 $response。
    猜你喜欢
    • 2012-03-28
    • 2015-03-01
    • 2011-11-26
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 2011-07-12
    • 2011-07-25
    • 2012-06-22
    相关资源
    最近更新 更多