api - LinkedIn API:OAuth 请求中使用的令牌已被撤销(Web 社交登录)
问题描述
以下是我尝试从 LinkedIn 获取用户数据的方法:
$config = array(
'appKey' => 'appKey',
'appSecret' => 'appSecret',
'callbackUrl' => 'callbackUrl'
);
@session_start();
$linkedin = new LinkedInOAuth2( $config );
if ( $_GET['login_type'] == 'linkedin_login' ) {
$scope = array( 'r_emailaddress', 'r_basicprofile' );
social_js_redirect( $linkedin-getAuthorizeUrl( $config['appKey'], $config['callbackUrl'], $scope ) );
} elseif ( ! empty( $_GET['code'] && ! empty( $_GET['state'] ) ) ) {
$data = $linkedin->getAccessToken( $config['appKey'], $config['appSecret'], $config['callbackUrl'] );
if ( ! empty( $data['access_token'] ) ) {
$linkedin->getProfile(); // Get user data from linkedin to add to database
} else {
// Invalid Authorization
}
}
这是添加到数据库中的错误代码:
Array
(
[0] => Array
(
[errorCode] => 0
[message] => Then token used in this request has been revoked by the user.
[requestId] => xxx
[status] => 401
[timestamp] => 1540051999134
)
)
注意:通过检查我的 PHP 代码,您将了解 LinkedIn 成功获取了访问令牌
解决方案
您能否在获得令牌后尝试添加 5-6 秒的延迟。我在stackoverflow/github上看到的关于这个问题的大多数问题都必须是由于LinkedIn似乎没有立即激活它提供的令牌,所以稍等片刻会有帮助。
推荐阅读
- python - 如何防止 Ansible 的 shell 配置中的条件命令评估?
- mariadb - 创建分区会锁定表?
- html - youtube iframe 视频无法在 Safari 上运行
- c# - 无法停止计划任务
- regex - 如果字符串包含特定单词,则正则表达式跳过部分字符串
- java - 将查询中的 BIT 作为 Prepared Statement 中的参数传递
- angular - 从日期选择器将角度字符串转换为日期
- emacs - Convert a selected region to org table
- r - 引用特定值下的行,同时保持过滤器打开
- c++ - 语法问题:`char [5] const &`是什么意思?