首页 > 解决方案 > 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 成功获取了访问令牌

标签: apioauthlinkedin

解决方案


您能否在获得令牌后尝试添加 5-6 秒的延迟。我在stackoverflow/github上看到的关于这个问题的大多数问题都必须是由于LinkedIn似乎没有立即激活它提供的令牌,所以稍等片刻会有帮助。


推荐阅读