Всегда получайте ошибку token_rejected при попытке вызвать API контактов yahoo

В соответствии с документацией Yahoo я выполнил следующие шаги:

  1. получить токен запроса
  2. перенаправить пользователя на страницу авторизации yahoo
  3. на странице обратного вызова используйте токен из параметра GET, чтобы получить oauth_token
  4. получить oauth_token и попытаться вызвать API контактов, чтобы получить список контактов с запросом GET по следующему URL-адресу:

    http://social.yahooapis.com/v1/user/'.$xoauth_yahoo_guid. '/contacts?format=json&oauth_consumer_key='._YH_APP_CK. '&oauth_signature_method=PLAINTEXT&oauth_nonce=noncedata&oauth_version=1.0'. '&oauth_signature='._YH_APP_SK.'%26'.$_SESSION['yahoo_token_secret']. '&oauth_token='.$oauth_token. '&oauth_timestamp='.date_timestamp_get(date_create());

где

$xoauth_yahoo_guid // user id
_YH_APP_CK // consumer key
_YH_APP_SK // consumer secret key
$_SESSION['yahoo_token_secret'] // secret token that was received from yahoo

Я использовал PLAINTEXT как oauth_signature_method и объединил секретный ключ и секретный токен для установки подписи, как указано в документации, но все равно получаю ошибку token_rejected, может ли кто-нибудь помочь мне найти причину? Спасибо.


person IgorCh    schedule 22.11.2013    source источник
comment
У вас есть session_start(); в начале вашего php-скрипта?   -  person Hackerman    schedule 22.11.2013
comment
да, сессия работает правильно, $_SESSION['yahoo_token_secret'] имеет правильное значение   -  person IgorCh    schedule 22.11.2013
comment
Проверьте эту информацию nullinfo.wordpress.com/oauth-yahoo   -  person Hackerman    schedule 22.11.2013


Ответы (1)


Я обнаружил, что oauth_signature_method=PLAINTEXT нельзя использовать для http:// запросов. В этом случае следует использовать SO oauth_signature_method=HMAC-SHA1. Следующий код можно использовать для создания oauth_signature с помощью метода HMAC-SHA1: https://github.com/joechung/oauth_yahoo/blob/master/getacctok.php

person IgorCh    schedule 03.12.2013