如何使用django-social-auth查看/重定向到Google +用户个人资料?

时间:2012-05-02 23:55:21

标签: django oauth-2.0 google-plus django-socialauth

重定向到G +个人资料需要“https://plus.google.com/<\profile_id>/posts”格式。我的问题是我还没有找到关于如何为网站用户动态获取profile_id的解决方案。它不是由我当前实现的django-social-auth(未保存在数据库中)获取的,并且google-oauth2帐户记录的UID字段保存了google电子邮件,也许我可以找到如何重定向到a G +配置文件使用电子邮件,这样会很好(虽然有些消息来源说目前不可能)。

2 个答案:

答案 0 :(得分:2)

无法使用Google+ API通过其电子邮件地址确定用户的个人资料ID。

但是,如果您能够通过OAuth 2.0流程发送用户,则可以使用REST API的people get method确定其配置文件ID。如果您使用Google's API Python client library,代码将如下所示:

import apiclient.discovery
import httplib2

flow = OAuth2WebServerFlow(
    client_id=client_id,
    client_secret=client_secret,
    scope='https://www.googleapis.com/auth/plus.me',
    user_agent='google-api-client-python-plus-cmdline/1.0',
    xoauth_displayname='Google Plus Client Example App'
    )
credentials_file = 'plus_auth.dat'
storage = Storage(credentials_file)
credentials = run(flow, storage)

http = credentials.authorize(http)
service = apiclient.discovery.build('plus', 'v1', http=http, developerKey=api_key)
people_resource = service.people()    
people_document = people_resource.get(userId='me').execute()

print "ID: " + people_document['id']

您还可以在Google+ Python starter app

中找到更完整的示例

答案 1 :(得分:2)

用户ID是Google在OAuth2工作流程中发送的数据的一部分,以下是存储它然后访问它的方式:

  1. 定义此设置:

    GOOGLE_OAUTH2_EXTRA_DATA = [     ('id','id') ]

  2. 访问ID:

    social = user.social_auth.get(provider ='google-oauth2')

    profile_id = social.extra_data ['id']