首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >推特1.1 OAuth authenticity_token_error(99)

推特1.1 OAuth authenticity_token_error(99)
EN

Stack Overflow用户
提问于 2014-04-20 21:33:11
回答 4查看 5.7K关注 0票数 9

我使用以下代码来获取持有者令牌:

代码语言:javascript
复制
$token = base64_encode($client_id.':'.$client_sec);

$data = array ('grant_type' => 'client_credentials');
$data = http_build_query($data);

$header = array(
    'Authorization: Basic '.$token,
    'Content-type: application/x-www-form-urlencoded;charset=UTF-8',
    'Content-Length: ' . strlen($data)
);

$options = array(
    CURLOPT_HTTPHEADER => $header,
    CURLOPT_HEADER => false,
    CURLOPT_URL => 'https://api.twitter.com/oauth2/token',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => $data
);

$ch = curl_init();
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
curl_close($ch);
print_r($result);
exit;

但是一直在输出:

{"errors":[{"label":"authenticity_token_error","code":99,"message":"Unable to verify your credentials"}]}

我哪里做错了?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-08-19 08:44:44

在与这个问题斗争了一段时间后,我发现问题是我从已经登录到Twitter的浏览器使用高级Rest客户端调用/oauth2/token。注销Twitter并再次调用API后,它工作得很好。

简而言之:在尝试请求持有者令牌时,请确保您还没有登录到Twitter的活动会话。

票数 19
EN

Stack Overflow用户

发布于 2015-09-10 03:42:14

我在这个问题上挣扎了一段时间,我找到的答案似乎都没有帮助。该错误的文档也是一个模糊的“有些地方出了问题”。

我的问题是,我使用的是我找到的代码的mashup,而头文件没有正确使用:

代码语言:javascript
复制
$headers = array(
    'Authorization' => 'Basic ' . base64_encode($appid . ':' . $secret), // WRONG!!!

    'Authorization: Basic ' . base64_encode($appid . ':' . $secret),     // Correct!
    'Content-Type: application/x-www-form-urlencoded;charset=UTF-8',     // Correct!
);

对我来说,问题是Authorization头使用的是键-值格式,而content-type头不是。这破坏了授权头。

以下是与错误99相关的其他一些需要检查的内容:

  1. 验证您的凭据是否正确且已使用base64编码(请参见上文)
  2. 确保请求正在使用post
  3. 确保已设置内容类型(请参见上文)
  4. 确保您将grant_type=client_credentials作为post字段包含在内。需要SSL<

>H112,确保正在使用verbose logging以帮助调试。它应该包括SSL证书信息、授权头和内容类型头。这不会显示grant_type字段,只会显示headers。

  1. 如果一切正常但仍然不能工作,您可能会受到速率限制。速率限制每15分钟重置一次。

当您最终获得访问令牌时,请确保将其缓存以避免速率限制。我相信你每15分钟就会收到450个请求。如果你不缓存你的访问令牌,其中的一半将会花在获取它上!

票数 6
EN

Stack Overflow用户

发布于 2018-09-30 06:28:15

这里已经有了一个公认的答案,但以防有人漫步到这篇文章,遇到了和我一样的问题……

供参考的推特文档-> OAuth 2.0 docs

误解#1:授权字符串是使用消费者密钥(又称API-Key)和消费者密钥代码(又称API Secret Key<>E210)生成的。与apps.twitter.com相比,这些凭据在developer.twitter.com上的UI中的显示不那么明显。尽管如此,常见的RIF问题。

误解#2:当base64对url连接的Consumer Key+":"+Consumer Secret进行编码时,这并不是一个误解,而是一个实现错误。如果不是以编程的方式执行此操作,请确保在base64编码的连接字符串中的任何位置(尤其是在:周围)检查处的空格。

还有一点建议postman有一个很棒的实用程序,它可以调用rest来检索oauth2.0令牌(以及其他身份验证令牌),当我试图使用需要oauth1.0令牌的api时,这个实用程序非常有用

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23183050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档