首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linkedin Oauth问题- oauth_verifier

Linkedin Oauth问题- oauth_verifier
EN

Stack Overflow用户
提问于 2012-04-12 20:07:51
回答 1查看 1.5K关注 0票数 1

尝试将我的JSAPI令牌交换为REST Oauth令牌(https://developer.linkedin.com/documents/exchange-jsapi-tokens-rest-api-oauth-tokens)时遇到一些问题

我正在使用这个库- http://code.google.com/p/oauth-php/ -而不是PECL扩展,因为我无法在服务器上安装扩展。

似乎有很多类似的问题,但没有一个能真正回答这个问题-如何使用上面的库来验证Linkedin。

我的代码如下:

代码语言:javascript
复制
    $cookie_name        = "linkedin_oauth_" . $this->_c->linkedin_api_key;
    $credentials_json   = stripslashes($_COOKIE[$cookie_name]);
    $credentials        = json_decode($credentials_json);

    // Get the Access Token + Secret
    $access_token_url = 'https://api.linkedin.com/uas/oauth/accessToken';

    OAuthStore::instance("2Leg", array(
        'consumer_key'      => $this->_c->linkedin_api_key,
        'consumer_secret'   => $this->_c->linkedin_api_secret
    ));

    try {

        $request = new OAuthRequester($access_token_url, 'POST', array(
            'xoauth_oauth2_access_token' => $credentials->access_token
        ));

        $result = $request->doRequest();

    } catch(OAuthException2 $e) {

        print_r($e->getMessage());

    }

catch语句输出:

Request failed with code 400: oauth_problem=parameter_absent&oauth_parameters_absent=oauth_verifier

如何获取此oauth_verifier?我的理解是,如果我已经通过了xoauth_oauth2_access_token,我就不应该需要它了?

我已经检查了所有变量,即$credentials和$this->_c,并且所有变量都正确传递。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-13 09:11:37

这实际上是oauth-php库中的一个bug。该库错误地处理以xoauth_*为前缀的参数,并以处理oauth_*参数的方式处理它们。这违反了OAuth规范,而且大多数(所有?)其他OAuth库没有这个问题。修复方法是执行以下操作:

在文件OAuthRequestSigner.php中,找到以下内容:

1)在getAuthorizationHeader函数中,找到下面这一行:

代码语言:javascript
复制
if (strncmp($name, 'oauth_', 6) == 0 || strncmp($name, 'xoauth_', 7) == 0)

并将其更改为:

代码语言:javascript
复制
if (strncmp($name, 'oauth_', 6) == 0)

2)在函数getQueryString中,找到下面这一行:

代码语言:javascript
复制
||  (strncmp($name, 'oauth_', 6) != 0 && strncmp($name, 'xoauth_', 7) != 0))

并将其更改为:

代码语言:javascript
复制
||  (strncmp($name, 'oauth_', 6) != 0)

在此之后,您所需要做的基本上与您已经在做的相同,如下所示:

代码语言:javascript
复制
try {

    $request = new OAuthRequester($access_token_url, "POST", array('xoauth_oauth2_access_token' => $access_token));

    $result = $request->doRequest();

    var_dump($result);

} catch(OAuthException2 $e) {

    print_r($e->getMessage());

}

你应该都准备好了。如果您有任何进一步的问题,请毫不犹豫地联系我们的developer forums,我自己或团队中的其他人都会很乐意帮助您。

享受吧!

-Jeremy

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10123254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档