我使用Python社交身份验证为我们的应用程序,我最近创建了一个双范围的谷歌登录。这个想法是允许用户使用谷歌登录,但然后升级范围,让我们阅读他们的电子邮件,并解析他们的相关内容。我也跟着在文档中列出的建议:http://psa.matiasaguirre.net/docs/use_cases.html#multiple-scopes-per-provider,创造了新的后端:Python社交身份验证多个范围额外的数据
from social.backends.google import GoogleOAuth2
class GoogleEmailOAuth2(GoogleOAuth2):
name = 'google-email'
,然后添加必要的部分,以我们的settings.py(和所有必要的网址):
SOCIAL_AUTH_GOOGLE_EMAIL_SCOPE = ['email', 'profile', 'https://www.googleapis.com/auth/plus.profile.emails.read']
SOCIAL_AUTH_GOOGLE_EMAIL_AUTH_EXTRA_ARGUMENTS = {'access_type': 'offline'}
SOCIAL_AUTH_GOOGLE_EMAIL_EXTRA_DATA = [
('id', 'user_id'),
('email', 'user_email'),
('refresh_token', 'refresh_token', True),
('expires_in', 'expires'),
('token_type', 'token_type', True)
]
和一切似乎工作,除了创建的UserSocialAuth对象不包含extra_data中的任何东西...我用正常的SOCIAL_AUTH_GOOGLE_OAUTH2_EXTRA_DATA使用相同的作用域,它的工作原理完美,但对于自定义后端仍然是nada。非常感谢您提出任何建议。
编辑:尝试了几种不同的方法,但仍然无法设置数据。
尽管此链接可能回答此问题,但最好在此处包含答案的基本部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/13631447) – jwpfox 2016-09-10 09:08:46
谢谢@jwpfox,相应更新。 – pzrq 2016-09-14 12:04:47