我正在尝试在我的api服务器上设置twitter反向身份验证。我的移动设备将调用此api端点来获取请求令牌,并使用它来使用twitter登录,并在手持设备上执行不同的操作。
我正在使用j7mbo / twitter-api-php:Simplest PHP example for retrieving user_timeline with Twitter API version 1.1
这个lib只有一个基本帖子并获得示例,但我查看了源代码并发现buildOauth执行了twitter所需的所有操作,即生成签名基本字符串和授权标头,并使用curl调用端点。
在我的代码中,我设置了consumer_key,secret,access_token密钥和secret,并设置x_auth_mode,如下所示:
$tw_settings = array(
'consumer_key' => $app['config']['twitter_api']['consumer_key'][$culture],
'consumer_secret' => $app['config']['twitter_api']['consumer_secret'][$culture],
'oauth_access_token' => $app['config']['twitter_api']['api_access_token'][$culture],
'oauth_access_token_secret' => $app['config']['twitter_api']['api_access_token_secret'][$culture],
);
$postfields = array(
'x_auth_mode' => 'reverse_auth'
);
$twitter = new TwitterAPIExchange($tw_settings);
$result = $twitter->setPostFields($postfields)
->buildOauth($url, $requestMethod)
->performRequest();
return $app->json($result);
但Twitter没有进行身份验证,说"无法验证oauth签名和令牌"。
答案 0 :(得分:0)
我终于开始工作了。你可以根据j7mbo / twitter-php-api获得这个git repo。我已经扩展到添加一个从twitter获取反向身份验证令牌的方法。您可以在服务器上生成此令牌,并使用设备将调用的休息端点公开它,并使用它来执行反向身份验证。通过这种方式,消费者密钥和消费者密钥可以安全地隐藏在服务器上,并且不会与所有客户端设备一起分发。
Git repo:https://github.com/srinivasmangipudi/twitter-api-php
要生成特殊请求令牌,请实例化TwitterApiExcahange对象,然后调用' buildReverseOauth'方法。 E.g:
$postfields = array(
'x_auth_mode' => 'reverse_auth'
);
$twitter = new TwitterAPIExchange($tw_settings);
$result = $twitter->setPostfields($postfields)
->buildReverseOauth($url, $requestMethod)
->performRequest();
这应该返回oauth_access_token。休息一切都和下面一样。