Я не очень хорошо знаком с потоком и / или кодировкой OAuth, но мне удалось (в некоторой степени) заставить мой сайт работать в качестве поставщика OAuth.
Я говорю как-то , потому что в течение долгого времени я получал ошибку «Неверная подпись» при использовании токена доступа для получения защищенной информации (я успешно получил токен запроса, авторизовал его и получил токен доступа).
ИтакЯ немного посмотрел на метод генерации подписи (я использую Drupal 7 и некоторые недокументированные модули).Код:
public function build_signature($request, $consumer, $token) {
$base_string = $request->get_signature_base_string();
$request->base_string = $base_string;
$key_parts = array(
$consumer->secret,
($token) ? $token->secret : "" // the token object has a key and a secret property
);
$key_parts = OAuthUtil::urlencode_rfc3986($key_parts);
$key = implode('&', $key_parts);
return base64_encode(hash_hmac($this->algo, $base_string, $key, TRUE));
}
Таким образом, используется секрет $token
для генерации подписи для запроса (плюс $base_string
, что не важно).
Так что яугадаю мой вопрос на самом деле: нужно ли приложению (клиенту), использующему мой OAuth, знать секрет токена доступа, чтобы он работал?Является ли секрет публичной информацией (не догадываюсь, отсюда и название).Что я тут не так делаю?