【发布时间】:2020-09-11 16:21:40
【问题描述】:
我正在尝试配置我的 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 响应:
{"error":"access_denied","error_description":"您的凭据不被允许"}
我错过了什么吗?提前致谢!
【问题讨论】:
标签: android django restful-authentication