使用twitter API获取身份验证令牌和身份验证令牌秘密

时间:2018-03-08 18:21:18

标签: php twitter codebird

我正在试图通过我的网站为有Twitter账号的用户发布推文发布用户界面,并在他们的主页上发布推文。此外,我喜欢访问网络摄像头,以卡通他们的脸,并将该图像与推文放在一起。 (我的主要目标是卡通化图像帖子)

最初我使用Codebird PHP库发推文。 https://github.com/jublonet/codebird-php

我测试了我的第一篇文章,就像他们的github页面中提供的相同示例Codebird一样。

require_once ('codebird.php');
\Codebird\Codebird::setConsumerKey('YOURKEY', 'YOURSECRET'); // static, see README

$cb = \Codebird\Codebird::getInstance();
/*You may either set the OAuth token and secret, if you already have them:*/

$cb->setToken('YOURTOKEN', 'YOURTOKENSECRET');

这部分很好用。

但这只适用于应用开发者。因为YOURTOKEN和YOURTOKEN SECRET位于https://apps.twitter.com/app/页面。

因此我尝试运行Codebird示例中给出的代码。

<?php 
require_once('./src/codebird.php');
\Codebird\Codebird::setConsumerKey('REPLACE_WITH_MY_CONSUMER_KEY');
$cb = \Codebird\Codebird::getInstance();
/*$cb->setToken('REPLACE_WITH_MY_CONSUMER_TOKEN');
session_start();

if (!empty($_SESSION['oauth_token'])) {
    echo 'ttt';
    var_dump($_SESSION['oauth_token']);
  // get the request token
  $reply = $cb->oauth_requestToken([
    'oauth_callback' => 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']
  ]);

  // store the token
  $cb->setToken($reply->oauth_token, $reply->oauth_token_secret);
  $_SESSION['oauth_token'] = $reply->oauth_token;
  $_SESSION['oauth_token_secret'] = $reply->oauth_token_secret;
  $_SESSION['oauth_verify'] = true;

  // redirect to auth website
  $auth_url = $cb->oauth_authorize();
  header('Location: ' . $auth_url);
  die();

} elseif (isset($_GET['oauth_verifier']) && isset($_SESSION['oauth_verify'])) {
  // verify the token
  $cb->setToken($_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
  unset($_SESSION['oauth_verify']);

  // get the access token
  $reply = $cb->oauth_accessToken([
    'oauth_verifier' => $_GET['oauth_verifier']
  ]);

  // store the token (which is different from the request token!)
  $_SESSION['oauth_token'] = $reply->oauth_token;
  $_SESSION['oauth_token_secret'] = $reply->oauth_token_secret;

  // send to same URL, without oauth GET parameters
  header('Location: ' . basename(__FILE__));
  die();
}

// assign access token on each page load
$cb->setToken($_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
$reply = $cb->statuses_update('status=Whohoo, I just Tweeted!');
?>

但它给出了这个错误。

  

致命错误:未捕获的Codebird \ CodebirdCredentialsException:要调用   此API必须设置OAuth访问令牌。

任何线索?或;

有什么简单的方法像Facebook处理这件事很容易。它重定向到Facebook登录页面,在登录后使用可以从我的网站发布任何用户。因此,任何为Twitter做某事的方法,比如调用本机登录窗口并从该登录会话中获取令牌和秘密,并从我的网站发布推文消息?

1 个答案:

答案 0 :(得分:0)

我刚从我的应用程序页面(https://apps.twitter.com/app)添加了回调网址,现在它的工作非常完美。如果用户未登录,它将自动重定向到登录页面(如下图所示),或者请求批准获取令牌和密钥的权限。

从设置标签回调网址:

enter image description here

如果用户未登录,则用户重定向工作正常:

enter image description here