Проблема OAuth API LinkedIn

Я использую класс PEAR OAuth для доступа к API разработчика LinkedIn и столкнулся с небольшой проблемой. Я могу авторизовать свое приложение, но когда дело доходит до получения accessToken, я получаю эту ошибку:

Изменить:

Код после предложений Адама

public function oauth_access()
{
    session_start();

    $token = $_GET['oauth_token'];
    $verifier = $_GET['oauth_verifier'];
    $secret = $_SESSION['trequest_token_secret'];

    $key = "****";
    $secret = "****";

    $oauthc = new OAuth($key, $secret, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_AUTHORIZATION);

    $oauthc->setToken($token, $secret);
    $oauthc->setNonce(rand());


    try
    {
        $access_token_info = $oauthc->getAccessToken("https://api.linkedin.com/uas/oauth/accessToken");
        $_SESSION['laccess_oauth_token']= $access_token_info['oauth_token'];
        $_SESSION['laccess_oauth_token_secret']= $access_token_info['oauth_token_secret'];
        $_SESSION['loauth_verifier'] = $verifier;

    }
    catch (OAuthException $e)
    {
       echo $e->getMessage();
    }
}

Но теперь я получаю другую ошибку:

Invalid auth/bad request (got a 401, expected HTTP/1.1 20X or a redirect)


person Dormouse    schedule 02.06.2011    source источник
comment
Мне просто любопытно, а есть ли причина использовать PEAR OAuth, а не библиотеку OAuth, предоставленную LinkedIn?   -  person Andrew Weir    schedule 02.06.2011
comment
Я не знал, что LinkedIn предоставляет библиотеку OAuth? Я видел много пользовательских библиотек, но ничего официального?   -  person Dormouse    schedule 02.06.2011
comment
Я использовал следующую библиотеку, прикрепленную к сообщению на форуме: developer.linkedin.com/thread/1439< /а>. Он не лишен недостатков, но я могу помочь вам в этом.   -  person Andrew Weir    schedule 02.06.2011


Ответы (1)


Вам не нужно вычислять подпись вручную, так как pecl/oauth сделает это за вас.

Кроме того, вы указываете библиотеке передавать данные в HTTP-заголовке авторизации. Это хорошее место, чтобы иметь его. Затем вы передаете его через параметр запроса. Это допустимо, но менее оптимально. (На самом деле вы можете передать его в двух местах.) Кроме того, pecl/oauth автоматически сгенерирует правильную метку времени.

Когда я только начинал, я нашел этот пост в блоге станет хорошим началом.

Или вы можете использовать PHP-библиотеку LinkedIn, указанную Полом. Это также хорошее место для начала, если вы не хотите повторно использовать pecl/oauth, потому что вы используете его где-то еще.

person Adam Trachtenberg    schedule 06.06.2011
comment
Привет, Адам, спасибо за ответ. Я обновил код в вопросе, чтобы он соответствовал тому, что у меня есть сейчас, но я все еще получаю ту же ошибку 401. Я использовал ту же статью WordPress в качестве отправной точки, но даже это, похоже, не работает для меня. - person Dormouse; 06.06.2011
comment
Как оказалось, я сбрасывал переменную, поэтому ваш ответ был правильным. Большое спасибо, так как это разрушило мою жизнь, есть немного щедрости. - person Dormouse; 06.06.2011