php - 使用 Twitter OAuth API 进行身份验证

标签 php twitter oauth

我目前正在尝试将 twitter 集成到我正在使用 OAuth 开发的 php 网络应用程序中。

我有一个 HTML 页面,它提供了指向 Twitter 应用程序身份验证 URL 的链接,该 URL 似乎工作正常并显示身份验证屏幕。

下面是调用函数的代码。

if (!isset($_GET['oauth_token']))
{
    //include("phpHandler/twitterLib/secret.php");
    getTwitterURL($consumer_key, $consumer_secret);
}

consumer_key 和 consumer_secret 包含在一个 php 文件中。

下面是获取推特授权url的代码。

function getTwitterUrl($consumer_key, $consumer_secret)
{
    $twitterObj = new EpiTwitter($consumer_key, $consumer_secret);
    $url = $twitterObj->getAuthorizationUrl();
    echo '<a class="linkButtons" href="'.$url.'">Add Twitter</a>';
}

这很好地重定向回页面,然后我调用身份验证方法来检索信息,如 Twitter 用户名。下面是进行身份验证的功能

function authenticate($consumer_key, $consumer_secret)
{
    require ("twitterLib/EpiCurl.php");
    require ("twitterLib/EpiOAuth.php");
    require ("twitterLib/EpiTwitter.php");
    require ("twitterLib/secret.php");*/
    $twitterObj = new EpiTwitter($consumer_key, $consumer_secret);
    $twitterObj->setToken($_GET['oauth_token']);
    $token = $twitterObj->getAccessToken();
    $twitterObj = new EpiTwitter($consumer_key, $consumer_secret);
    $twitterObj->setToken($token->oauth_token, $token->oauth_token_secret);
    $token = $twitterObj->getAccessToken();
    $twitterObj->setToken($token->oauth_token, $token->oauth_token_secret);
    $_SESSION['ot'] = $token->oauth_token;
    $_SESSION['ots'] = $token->oauth_token_secret;
    $twitterInfo= $twitterObj->get_accountVerify_credentials();
    echo '<pre>';
    print_r($twitterInfo->response);
  }

echo 和 print_r 是显示从 twitter 返回的响应。

我在数组中打印出以下错误

Array ( [error] => Invalid / expired Token [request] => /account/verify_credentials.json )

我该如何解决这个错误。我不知道为什么它无效或过期,我关闭浏览器并重新启动但出现相同的错误。

感谢您提供的任何帮助。

最佳答案

如果用户从他们的设置中明确拒绝您的应用程序,或者如果 Twitter 管理员暂停您的应用程序,您的访问 token 将无效。如果您的申请被暂停,您的申请页面上会显示一条说明它已被暂停。

许多用户信任应用程序来读取他们的信息,但不一定会更改他们的姓名或发布新状态。通过 Twitter API 更新信息——无论是名称、位置还是添加新状态——都需要 HTTP POST。我们在实现时坚持同样的限制。任何需要 HTTP POST 的 API 方法都被视为写入方法并需要读写访问权限。

无论您的存储系统是什么,您都需要开始为应用程序的每个用户存储 oauth_token 和 oauth_token_secret(统称为“访问 token ”)。 oauth_token_secret 应该安全地存储。请记住,对于您的应用程序向 Twitter API 发出的每个经过身份验证的请求,您都将访问这些值,因此请以适合您的用户群的方式存储它们。当您使用 OAuth 时,您不应再为任何用户存储密码。

require '../tmhOAuth.php';

require '../tmhUtilities.php';

$tmhOAuth = new tmhOAuth(array(

  'consumer_key'    => 'YOUR_CONSUMER_KEY',

  'consumer_secret' => 'YOUR_CONSUMER_SECRET',

  'user_token'      => 'AN_ACCESS_TOKEN',

  'user_secret'     => 'AN_ACCESS_TOKEN_SECRET',

));



// we're using a hardcoded image path here. You can easily replace this with an uploaded image-see images.php example)

// 'image = "@{$_FILES['image']['tmp_name']};type={$_FILES['image']['type']};filename={$_FILES['image']['name']}",



$image = "./dickvandyke.jpg';



$code = $tmhOAuth->request('POST', 'https://upload.twitter.com/1/statuses/update_with_media.json',

  array(

    'media[]'  => "@{$image}",

    'status'   => "Don't slip up" // Don't give up..

  ),

  true, // use auth

  true  // multipart

);



if ($code == 200) {

  tmhUtilities::pr(json_decode($tmhOAuth->response['response']));

} else {

  tmhUtilities::pr($tmhOAuth->response['response']);

}

关于php - 使用 Twitter OAuth API 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9319546/

相关文章:

php - 使用 PHPUnit 模拟私有(private)方法

php - 分页问题 [PHP & is_numeric]

javascript - 如何将 php 变量添加到此 Javascript 中?

ios - 可以使用一个特定的用户帐户访问 Twitter 吗?

抨击图形 api 时出现 Facebook Oauth 异常错误?

php - 使用 iOS 的社交网络登录

php - 如何简化数组值初始化

python - 将 Tweepy 与 Apigee 结合使用

hadoop - 如何使用pig从hdfs加载twitter数据?

java - Google OAuth Java 客户端和 Twitter API