我正在尝试将django rest API配置为使用Google登录OAuth和 django-rest-framework-social-oauth2
我已经看过this question,但似乎无法弄清楚他们如何检索access_token
根据this指南,我到目前为止已经尝试过的操作:
在console.developers.google.com
已添加到settings.py
:
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = '2377[...].apps.googleusercontent.com'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = '[...]'
SOCIAL_AUTH_GOOGLE_OAUTH2_SCOPE = ['email']
INSTALLED_APPS = [
...
# oauth
'oauth2_provider','social_django','rest_framework_social_oauth2'
]
AUTHENTICATION_BACKENDS = (
# Google OAuth2
'social_core.backends.google.GoogleOAuth2',# django-rest-framework-social-oauth2
'rest_framework_social_oauth2.backends.DjangoOAuth2',# Django
'django.contrib.auth.backends.ModelBackend',)
但是,当我尝试交换我从Android上的Google登录获取的身份验证代码
时,gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestServerauthCode(Values.CLIENT_ID_WEB_APP)
.requestEmail()
.build();
在我的Django Rest API后端使用访问令牌
OkHttpClient client = new OkHttpClient();
RequestBody requestBody = new FormEncodingBuilder()
.add("grant_type","convert_token")
.add("client_id",Values.CLIENT_ID_REST_APP)
.add("client_secret",Values.CLIENT_SECRET_REST_APP)
.add("backend","google-oauth2")
.add("token",idToken)
.build();
我从服务器收到400 HTTP响应:
{“错误”:“ access_denied”,“错误描述”:“不允许使用您的凭据”}
我错过了什么吗?预先感谢!