繁体   English   中英

领英 - 无法检索访问令牌

[英]Linkedin - Unable to retrieve access token

为访问令牌调用 Linkedin API 时出现以下错误:

“无法检索访问令牌:appid/redirect uri/code verifier 与授权码不匹配。或授权码已过期。或存在外部成员绑定”

这是我正在调用的链接:

https://www.linkedin.com/oauth/v2/accessToken?client_id=L1kfji328dfpoef&client_secret=klOpdfkJHGHuLOm14sdfkOj&grant_type=authorization_code&redirect_uri=http://example.com/linkedin-redirect&code=AQUIdkfdiksdr4D18sdfkiHk52LX5pX_T4AgKOKHU45Hrt7Bcu0ln8d2PITq8DuvNkVftV-plJ2tvOU4TnMAQ-nksdldTYkL902G9p0MKLKkljsd9mtNjjzBgq-lFqlcqtD4T2mYWmW498fJ7GbkDpyiQXHFo6xFsbSdrJxe3dJgh2A5edgpprm3vAY9REVM-Osdfki1

有人可以建议我做错了什么或在这里遗漏了什么。 我已经完成了这里提供的大部分答案,但没有运气。

您应该通过身份验证并要求获得令牌。 然后,当您拥有令牌时,您可以继续您的请求。

这是因为 LinkedIn 使用的是Oauth2 auth

检查以确保您的客户端 ID、客户端密钥和重定向 URI 与您的 LinkedIn 开发人员应用程序授权设置的配置相匹配。

我有相同的问题。 我尝试将这些 API 与 android 一起使用,特别是与 AppAuth 库一起使用。 该库还自动在请求中包含 code_verifier 参数,如果添加它,您将获得不同的响应。 代码验证器可以是随机字符串,但您必须将其发送到/oauth/v2/authorization/oauth/v2/accessToken

添加后,我收到了一个不同的错误,它只是access_denied500 Internal Server Error 从这里开始,我对正在发生的事情一无所知,LinkedIn 开发人员支持只是一个笑话。

PS:code_verifier参数没有在LinkedIn的文档提到,但服务器需要它,它是一个的OAuth2标准参数,你可以看到在这里

PPS:您是否使用Content-Type = x-www-form-urlencoded的 POST 请求? 您在此处发布的 URL 似乎是带有作为查询参数传递的参数的 GET,而不是带有 urlencoded params 形式的 POST

编辑:我终于让它工作了! 你不需要code_verifier ,对我来说有什么技巧是删除state参数。 一旦我删除它,我就得到了访问令牌。 我比以往任何时候都更讨厌 Linkedin。

下面的代码将帮助您获取访问令牌

       $params = array('grant_type' => 'authorization_code',
            'client_id' => $this->api_key,
            'client_secret' => $this->api_secret,
            'code' => $_GET['code'],
            'redirect_uri' => base_url().$this->redirect,
        );
        // Access Token request
        $url = 'https://www.linkedin.com/oauth/v2/accessToken?' . http_build_query($params);
        $data_len = strlen(http_build_query($params));
        // Tell streams to make a POST request
        $context = stream_context_create(
                array('http' =>
                    array('method' => 'POST','header'=> 'Content-Length: 0'
                    )
                )
        );

        // Retrieve access token information
        $response = file_get_contents($url, false, $context);
        $token = json_decode($response);
        return $token->access_token;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM