让我们在这里一步一步走。看起来您正试图使用OAuth进行身份验证,but before you can do so you need to get the Access Token 它将用于在进行API调用时进行身份验证。
因为这是使用OAuth版本1,为了获得Access Token 您必须执行以下操作:
首先,安装一个应用程序,调用站点以获取Request Token (临时凭据)使用应用程序的客户端ID和密码第二,调用站点以使用Request Token 从第一步开始(面向用户,见下文)第三,授权完成后,您可以致电该网站获取Access Token (现在该应用程序已获得授权)我建议在前几个步骤中使用Postman,因为它们只需要完成一次。Postman还将处理生成timestamp
, nonce
和oauth signature
, 因此,如果您没有使用OAuth库,那么您绝对应该使用Postman。一旦你有了Access Token 您可以通过CURL进行调用,而不需要任何库。
https://www.getpostman.com/
第一步(安装应用程序)
安装WP OAuth 1插件,激活,然后转到下面的菜单项
Users > Applications. 添加新应用程序,填写名称和说明。对于回调,可以是将用户重定向到的URL(授权后),或者
oop
对于带外流,将重定向到显示验证器令牌的内部页面(而不是重定向)。
https://github.com/WP-API/OAuth1/blob/master/docs/basics/Registering.md
要继续第二步,需要使用
Client ID 和
Client Secret 从创建的应用程序获取临时凭据(请求令牌)。
打开Postman,创建新呼叫http://website.com/oauth1/request
, 单击授权选项卡,从下拉列表中选择OAuth 1.0,输入客户机密钥、客户机机密,将签名方法设置为HMAC-SHA1
, 启用将参数添加到标头,encode oauth signature, 然后单击Update Request
Postman会自动为您生成签名、nonce和时间戳,并将它们添加到标题中(您可以在标题选项卡下查看)。
单击“发送”,您应该会得到一个响应,其中包括oauth_token
和oauth_token_secret
:
下一步将使用这些值授权WordPress用户帐户下的应用程序。
第二步(授权应用程序)
授权步骤只需完成一次,此步骤面向用户,每个人都熟悉。此步骤是必需的,因为您使用的是OAuth1,并且应用程序需要与WordPress用户帐户相关联。想想当一个网站允许你登录Facebook时。。。他们会将您引导到Facebook,在那里您可以登录并单击“授权”。。。这需要通过WordPress网站来完成。
我建议您在这一步中使用Web浏览器,因为您可以轻松地在URL中设置变量,这将提供“授权”页面来授权应用程序。
打开web浏览器并键入网站的URL,如下所示:http://website.com/oauth1/authorize
现在添加到此URL,oauth_consumer_key
(客户ID),oauth_token
和oauth_token_secret
(来自上一步)。在我的示例中,这是完整的URL:
http://website.com/oauth1/authorize?oauth_consumer_key=TUPFNj1ZTd8u&oauth_token=J98cN81p01aqSdFd9rjkHZWI&oauth_token_secret=RkrMhw8YzXQljyh99BrNHmP7phryUvZgVObpmJtos3QExG1O
单击“授权”后,您将看到另一个带有验证令牌的屏幕。在我的示例中,这是返回的验证令牌
E0JnxjjYxc32fMr2AF0uWsZm
第三步(获取访问令牌)
现在我们已经对应用程序进行了授权,我们需要进行最后一次调用,以获取将用于进行所有API调用的授权令牌。就像第一步一样,我将使用Postman(因为签名必须是HMAC-SHA1),这使完成这些步骤变得容易了100倍。
再次打开Postman,并将URL更改为http://website.com/oauth1/access
确保添加令牌和令牌机密(第一步中的值),然后单击Params 显示URL下方的框。在左侧键入oauth_verifier 在右侧,输入第二步的代码Verification Token
确保单击“更新请求”,然后单击“发送”,您应该会收到回复
oauth_token
和
oauth_token_secret
... 这就是您进行API调用所需要的!丢弃步骤1中的原始内容,将这些内容保存在代码中或其他安全的地方。
然后,可以对站点进行API调用,使用返回的令牌和令牌密钥设置标头。
您可以通过授权标头、GET参数或POST(如果编码为application/x-www-form-urlencoded)以多种方式传递此消息。请记住,您必须传递签名、时间戳和nonce。我不知道这个回复需要多长时间,所以明天我将用代码更新这个示例。
我强烈建议安装Rest API日志,以便您可以查看API调用的日志,并查看发送和返回的内容等。这将极大地帮助调试。
https://github.com/petenelson/wp-rest-api-log