【问题标题】:Google Oauth2 provider not implementedGoogle Oauth2 提供程序未实施
【发布时间】:2014-01-17 06:30:16
【问题描述】:
我正在使用 django 1.6。我的应用需要社交身份验证,所以我使用 django-social-auth 应用。我正在尝试列出我的 google 帐户中的所有朋友。我按照网址中指示的步骤进行操作:http://c2journal.com/2013/01/24/social-logins-with-django/
为了列出我使用的所有朋友 django-social-friends-finder。我创建了一个 google api 项目,并在我的设置中的 GOOGLE_OAUTH2_CLIENT_ID 和 GOOGLE_OAUTH2_CLIENT_SECRET 中使用了 client id 和 secret key。 .py 文件。我为 redirect_uri 参数提供了我的 localhost ip。
我使用我的电子邮件成功验证了身份,但无法列出我的朋友列表。当我在终端中调试时,错误消息显示为 'provider: %s is not implemented'。我搜索了很多,但找不到解决方案。请帮帮我。提前致谢。
【问题讨论】:
标签:
django
google-oauth
django-socialauth
【解决方案1】:
从未使用过django-social-friends-finder,但我猜它有时会调用https://www.googleapis.com/plus/v1/people/me/people/visible 来检索您的朋友列表。但是要访问该 API,您需要指定正确的范围,这样您的访问令牌就有权限。为此,请在 django-social-auth 中定义此设置:
GOOGLE_OAUTH_EXTRA_SCOPE = [
'https://www.googleapis.com/auth/plus.login'
]
此 sn-p 还显示了如何检索您的朋友列表:
import requests
user = User.objects.get(...)
social = user.social_auth.get(provider='google-oauth2')
response = requests.get(
'https://www.googleapis.com/plus/v1/people/me/people/visible',
params={'access_token': social.extra_data['access_token']}
)
friends = response.json()['items']