Oauth 2.0 Django allauth使用linkedin存储一个空令牌\u secret\u oauth2

Oauth 2.0 Django allauth使用linkedin存储一个空令牌\u secret\u oauth2,oauth-2.0,django-allauth,linkedin,Oauth 2.0,Django Allauth,Linkedin,我正在尝试向linkedinAPI发出进一步的请求,为此我需要token和token_secret 我在linkedin中有几个测试帐户,所有帐户的登录过程都成功,但是token_secret存储(所有帐户都为空) 这是一个错误吗?我怀疑是这样,因为在子提示oauth2调用中使用pair token/token_secret,我从linkedin获得了以下信息 { "errorCode": 0, "message": "[unauthorized]. The token used in the

我正在尝试向linkedinAPI发出进一步的请求,为此我需要token和token_secret

我在linkedin中有几个测试帐户,所有帐户的登录过程都成功,但是token_secret存储(所有帐户都为空)

这是一个错误吗?我怀疑是这样,因为在子提示oauth2调用中使用pair token/token_secret,我从linkedin获得了以下信息

{ "errorCode": 0, "message": "[unauthorized]. The token used in the OAuth request is not valid. AQVvM2f2qefU3vULPS-R46DXN8Mnra9ImG14hzeTvMMcXvBVOEiUl4RTZCJrdFZoTfGGN1fFzLvxG-O_UWB8s8EDr35ZsgwW59y4KilndoEkr105Sg2GR90jmUxpqxU572IiARjN5gxAjfoWC4-_UupKlEtafQn23XQqvXeuLvE-FsPAaSA", "requestId": "VOAL1ULK4X", "status": 401, "timestamp": 1395348629428 }
更多详细信息: 我使用shell检查这些令牌:

from allauth.socialaccount.models import SocialToken
map(lambda st: st.token_secret, SocialToken.objects.all())
我得到了空输出:

[u'', u'', u'']

我自己找到了解决办法,我会解释的

我对oauth2不是很感兴趣,所以我也不知道这个过程,如果有一个空的secret_令牌是正常的话。因此,我对django allauth代码进行了一些调试,发现它们执行的请求只使用令牌(没有秘密令牌)

然后我更改了库,并开始使用与之相同的:请求。通过以下简单脚本,我可以向linkedin API发出任何其他请求:

def see_my_groups_json(request, url):    
    import requests
    token = SocialToken.objects.get(account__user_id=request.user.pk)
    resp = requests.get(url, params={'oauth2_access_token': token.token})
    return resp.json()

您应该检查提供者的范围参数。例如,下一个配置请求访问用户电子邮件地址、基本配置文件以及代表用户读取和共享更新的权限

SOCIALACCOUNT_PROVIDERS = {
    'linkedin_oauth2': {
        'SCOPE': ['r_emailaddress', 'r_basicprofile', 'rw_nus'],
        'PROFILE_FIELDS': ['id', 'first-name', 'last-name', 'email-address', 'picture-url', 'public-profile-url']
    }
}
如果在令牌生成之后,我们尝试进行需要其他特权的API调用,我们将得到401状态码HTTP响应

默认情况下,r\u emailaddress作用域或根本不存在,具体取决于是否启用了SOCIALACCOUNT\u QUERY\u电子邮件

希望这对你有帮助