1

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

4

2 回答 2

2

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

但是,如果您能够通过 OAuth 2.0 流程发送用户,则可以使用 REST API 的people get 方法确定他们的个人资料 ID 。如果您使用的是Google 的 API Python 客户端库,代码将如下所示:

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 入门应用中找到更完整的示例

于 2012-05-03T17:21:47.813 回答
2

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

  1. 定义此设置:

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

  2. 访问标识:

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

    profile_id = social.extra_data['id']

于 2012-05-07T22:46:59.417 回答