我创建了一个Twitter应用程序,我拥有所有凭据(访问令牌,密钥,消费者密钥和密钥)。我正在使用Abraham's Twitter Oauth。我已经能够运行应用程序,但我目前无法成功授权新帐户。相反,它要求新用户在授权完成之前输入在用户授予访问权限之后生成的PIN。
我在互联网上做了一些查询,并指出了Twitter.com的手册here和here。根据我能够阅读的内容,Implementing a desktop sign in request需要oauth_callback
值。我已尝试为此参数添加值,但它返回错误:Fatal error: Uncaught exception 'Abraham\TwitterOAuth\TwitterOAuthException' with message '<?xml version="1.0" encoding="UTF-8"?> <hash> <error>Desktop applications only support the oauth_callback value 'oob'</error> <request>/oauth/request_token</request> </hash> '
,但如果我没有向oauth_callback
参数添加值,则会重定向到Twitter .com的授权页面成功,但随后生成一个需要在应用程序中填写的PIN。
我真诚地不知道如何绕过这个,任何帮助都将不胜感激。
这是我的代码:
require_once "twitteroauth/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
//Check if form was submitted
if(isset($_GET['activate-account']) && $_GET['activate-account'] == 'true'){
session_start();
//Get App Details (Consumer key and secret) from DB
$appID = 1;
$consumerKey = getAutoTweetPart($appID, 'consumer_key');
$consumerSecret = getAutoTweetPart($appID, 'consumer_secret');
$callBack = '';
$connection = new TwitterOAuth($consumerKey, $consumerSecret);
$request_token = $connection->oauth('oauth/request_token', array('oauth_callback' => $callBack));
$_SESSION['oauth_token'] = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];
$url = $connection->url('oauth/authorize', array('oauth_token' => $request_token['oauth_token']));
header('Location: '. $url);
}
答案 0 :(得分:2)
您应检查您的应用(从https://apps.twitter.com链接)是否指定了回调网址,以便您不使用桌面模式。不应锁定回调网址,除非它始终相同,例如恒定的主机/端口。
然后您的request_token调用可以指定您希望用户重定向到的URL。
这是此处描述的流程的一部分https://dev.twitter.com/web/sign-in/implementing