尝试获取request_token时的signature_invalid(Yahoo)

时间:2012-08-21 17:41:53

标签: php oauth yahoo yahoo-api

我开始开发一个脚本来获取Yahoo用户的联系人。在获取联系人之前,当我执行这样的链接请求时,我遇到了获取请求令牌的问题:

<a class="yahoo" href="https://api.login.yahoo.com/oaut/v2/get_request_token?oauth_nonce=<?php echo uniqid() ?>&oauth_timestamp=<?php echo time() ?>&oauth_consumer_key=<?php echo $yahoo_consumer_key ?>&oauth_signature_method=plaintext&oauth_signature=<?php echo $yahoo_consumer_secret ?>&oauth_version=1.0&xoauth_lang_pref=en-us&oauth_callback=<?php echo urlencode('http://myfullurl.com') ?>">Get Contacts</a>

我收到一个HTTP标题401 Forbidden with message:oauth_problem = signature_invalid

我不知道我是否正确设置了链接,但这是我通过http://developer.yahoo.com/oauth/guide/oauth-sign-plaintext.html了解的内容

参考:http://developer.yahoo.com/oauth/guide/oauth-requesttoken.html

1 个答案:

答案 0 :(得分:1)

您对https://api.login.yahoo.com/oaut/v2/get_request_token的呼叫必须是服务器端呼叫,而不是用户必须点击的链接。

如果你不知道如何做到这一点,你应该使用一些PHP OAuth library为你处理这个问题。

然后,正如雅虎在their documentation中所说的那样:

  

对于get_request_token的请求,令牌密钥不存在。仅包括消费者秘密,后跟“&amp;”字符。

您的oauth_signature应该是:

&oauth_signature=<?php echo $yahoo_consumer_secret . "&" ?>