Linkedin signin:无法检索访问令牌:appId或重定向uri与授权代码或授权代码已过期不匹配

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linkedin signin:无法检索访问令牌:appId或重定向uri与授权代码或授权代码已过期不匹配相关的知识,希望对你有一定的参考价值。

我在http://localhost/index.php中有以下按钮:

<a href="https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=123456789&state=adasd8asd8sad&scope=r_basicprofile&redirect_uri=http://localhost/linkedin.php">Linked in</a>

然后在redirect_url我有以下PHP代码:

<?php
$data = array(
    'client_id'     => '123456789',
    'client_secret' => 'abcdefghijklm',
    'grant_type'    => 'authorization_code',
    'code'          => $_REQUEST['code'],
    'redirect_uri'  => 'http://localhost/index.php',
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.linkedin.com/uas/oauth2/accessToken');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$result = curl_exec($ch);

var_dump($result);die;

但是这会导致:

string(263)“{”error_description“:”缺少必需参数,包含无效参数值,参数不止一次。 :无法检索访问令牌:appId或重定向uri与授权代码或授权代码已过期不匹配“,”错误“:”invalid_request“}”

我还想说,点击链接后,最长2秒,直到运行linkedin.php中的代码。所以它在20秒内就能满足要求。所以它真的不能过期。

在Linkedin的开发者控制台:

配置的重定向网址是:http://localhost/linkedin.phphttp://localhost/index.php

'client_id'=>'123456789'(模糊),'client_secret'=>'abcdefghijklm'(模糊)

默认应用程序权限:r_basicprofile

谁能明白为什么我会收到这个错误?

答案

当您调用/accessToken端点时,必须指定与初始redirect_uri请求相同的/authorization值。见OAuth2 RFC。现在你的价值不同了:

  • http://localhost/linkedin.php
  • http://localhost/index.php

以上是关于Linkedin signin:无法检索访问令牌:appId或重定向uri与授权代码或授权代码已过期不匹配的主要内容,如果未能解决你的问题,请参考以下文章

LinkedIn工作搜索REST API问题

如何使用 iOS SDK 保存 LinkedIn 访问令牌?

尝试通过护照linkedin集成linkedin登录时“无法在会话中找到请求令牌”

Linkedin oauth 访问令牌刷新不会增加过期时间

使用linkedIn访问令牌时缺少client_id

我无法从 Spotify 为我的应用检索访问令牌