TwitterAPI仅应用程序身份验证

TwitterAPI仅应用程序身份验证,api,twitter-oauth,Api,Twitter Oauth,我正在使用Twitter API实现OAuth,文档如下: 我使用使用者密钥和使用者机密创建了POST请求,如下所示: POST http://api.twitter.com/oauth2/token Authorization: Basic T3k2TlA4SnpCVGRiNXlFTUt2dGswamJGSTpiSlpEYm1xeExyeDJKU25JbUplcWdlQTJkREcwZXg0bUNtOUdGTGJ1TGF3TkZkNkxqNg== Content-Type: applicat

我正在使用Twitter API实现OAuth,文档如下: 我使用使用者密钥和使用者机密创建了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
我得到一个响应,出现以下错误:

{“errors”:[{“code”:99,“label”:“authenticity\u token\u error”,“message”:“无法验证您的凭据”}]}


尽管如此,我正在从我的应用程序设置中获取数据

我收到了您请求的令牌

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

您的问题在“获取或撤销持票人代币的无效请求”一章的文档中描述

grant\u type=client\u 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

尽管是额外的:问题可能是您正在使用
http://...
URL,而正确的方法是使用
https://...
link

按照以下两个步骤操作。我自己做了,也做了测试。工作正常,您将能够获得访问令牌

步骤1)

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

消费键=xvz1evfs4weettgefphbog

消费者秘密=L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg

使用使用者密钥和使用者机密,我们必须生成一个基64字符串。为此,我们必须首先使用冒号(:)作为分隔符连接使用者密钥和使用者机密

因此,在我的例子中,连接的字符串将是:

xvz1evFS4wEEPTGEFPHBog:L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg
注意:串联字符串中不应有空格

现在我们准备好了连接字符串。现在我们必须生成base64字符串。为此,我们可以使用在线服务来做到这一点。 打开此URL并粘贴连接的字符串并单击“转换源代码”。这将为您提供基本64字符串

在我的例子中,base64字符串是(在您的例子中,您将有不同的):

xvz1evFS4wEEPTGEFPHBog:L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg

现在,通过使用Base64字符串,我们必须生成Base64编码的字符串。所以要做到这一点,我们可以使用在线服务。打开链接并粘贴Base64字符串,然后单击“编码”

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

EHZ6MWV2RLM0D0VFUFRHRUZQSEJVZZZPMOFXOVBAEVJNNMLS0DFS2HAB2XHQZB2SLDZHPRUO4OERSZHLPZW==

步骤2)

现在打开你的邮递员(这是谷歌chrome测试API的插件)&执行以下步骤:(我也附上邮递员请求的屏幕截图,如果你是新来的邮递员,可以查看一下)

  • 请求必须是HTTP POST请求。网址是:
  • 请求必须包含值为Basic的授权标头。 例如:

    基本EHZ6MWV2RLM0D0VFUFRHRUZQSEJVZZZPMOFXOVBAEVJNNMLS0DFS2HAB2XHQZB2SLDZHPRUO4OERSZHLPZW==

  • 请求必须包括一个值为application/x-www-form-urlencoded的内容类型头; 例如:Content Type=application/x-www-form-urlencoded
  • 点击Body->Raw and typegrant\u type=client\u凭证
  • 单击发送,您将获得您的访问令牌


    如果您在执行此步骤时遇到任何问题,请告诉我。

    您的标题中应该使用这种格式,twitter使用OAuth 1.0

    Authorization:OAuth oauth_consumer_key="{consumer-key}",oauth_token="{oauth token},oauth_signature_method="HMAC-SHA1",oauth_timestamp="1500034490",oauth_nonce="ycnFHs",oauth_version="1.0",oauth_signature="{oauth-signature}"
    

    我认为你们中的一些人可能在生成Base64编码的承载令牌凭证(在授权头中使用Basic XXX传递的内容)方面有问题

    然后,基本身份验证(授权选项卡)可以帮助您:

    它将自动添加具有值的适当授权标头


    参考资料:

    您是否尝试过在您的位置?是的,但主要问题是缺少“https”前缀@öаааEvgeniy ohhh是的,我应该是https。不管怎样,它将帮助人们实现这一点,而不会带来任何麻烦。只有当我跳过第一步(关于)时,它才对我起作用。此外,这里还有一个官方推特文档的链接,具体说明了这篇文章的建议: