Twitter API仅应用程序身份验证

Evg*_*niy 2 api twitter-oauth

我正在使用Twitter API按照文档实现OAuth: 仅应用程序身份验证 我使用Consumer key&Consumer Secret创建了POST请求,如下所示:

POST http://api.twitter.com/oauth2/token
Authorization:  Basic T3k2TlA4SnpCVGRiNXlFTUt2dGswamJGSTpiSlpEYm1xeExyeDJKU25JbUplcWdlQTJkREcwZXg0bUNtOUdGTGJ1TGF3TkZkNkxqNg==
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
grant_type=client_credentials
Run Code Online (Sandbox Code Playgroud)

我得到了一个有以下错误的回复:

"{"errors":[{"code":99,"label":"authenticity_token_error","message":"无法验证您的凭据"}]}"

虽然,我从我的应用程序设置中获取数据

sFo*_*jit 11

按照2个步骤.我自己完成并测试了它.它工作正常,你将能够获得访问令牌

步骤1)

在您的情况下,您必须使用您的消费者密钥和密码替换以下两个值:

Cosumer key = xvz1evFS4wEEPTGEFPHBog

消费者秘密 = L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg

使用消费者密钥和消费者密钥,我们必须生成一个base 64字符串.所以要做到这一点,我们必须首先使用冒号(:)作为分隔符连接消费者密钥和消费者密钥

所以在我的例子中,连接的字符串将是:

xvz1evFS4wEEPTGEFPHBog:L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg
Run Code Online (Sandbox Code Playgroud)

注意:连接字符串中不应有空格

所以现在我们已经准备好了我们的串联字符串.现在我们必须生成base 64字符串.为此,我们可以使用在线服务来执行此操作.打开这个网址http://www.motobit.com/util/base64-decoder-encoder.asp并粘贴连接字符串和点击"转换的源代码".那会给你基地64串.

在我的情况下,Base 64字符串是(你的情况会有所不同):

xvz1evFS4wEEPTGEFPHBog:L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg

现在,通过使用我们的Base64字符串,我们必须生成Base 64编码字符串.所以,为此,我们可以使用在线服务.打开链接https://www.base64encode.org/并粘贴我们的Base64字符串并单击"编码".

最后,您将获得我们必须在令牌请求中使用的Base64编码字符串.就我而言,它看起来像这样:

eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJnNmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZw ==

第2步)

现在打开你的POSTMAN(它是用于测试API的谷歌浏览器的插件)并执行以下步骤:(我正在附上POSTMAN请求的屏幕截图,如果你是POSTMAN的新手,请查看它)

  1. 请求必须是HTTP POST请求.和网址是:https://api.twitter.com/oauth2/token
  2. 请求必须包含值为Basic的Authorization标头. 例如 :

    基本eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJnNmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZw ==

  3. 请求必须包含一个Content-Type标头,其值为application/x-www-form-urlencoded; 例如:Content-Type = application/x-www-form-urlencoded
  4. 单击Body- > Raw并键入grant_type = client_credentials

在此输入图像描述

在此输入图像描述

点击SEND,您将获得访问令牌.

如果您在执行此步骤时遇到任何问题,请与我们联系.


Vla*_* L. 6

我收到了带有您请求的令牌。

重要的!之后您必须使安全令牌无效,永远不要在公共资源上共享您的凭据,提供一些虚拟数据。

您的问题在“获取或撤销不记名令牌的无效请求”一章的文档中有所描述

grant_type=client_credentials不是首部,但是请求的主体:

curl --request POST \
  --url https://api.twitter.com/oauth2/token \
  --header 'authorization: Basic T3k2TlA4SnpCVGRiNXlFTUt2dGswamJGSTpiSlpEYm1xeExyeDJKU25JbUplcWdlQTJkREcwZXg0bUNtOUdGTGJ1TGF3TkZkNkxqNg==' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data grant_type=client_credentials
Run Code Online (Sandbox Code Playgroud)

另外:也许问题在于您使用的是http://...URL,而正确的是使用https://...链接