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フローを介してユーザーを送信できる場合は、RESTAPIのpeoplegetメソッドを使用してユーザーのプロファイルIDを決定できます。GoogleのAPIPythonクライアントライブラリを使用している場合、コードは次のようになります。

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は、OAuth2ワークフローでGoogleによって送信されるデータの一部です。これを保存して、アクセスする方法は次のとおりです。

  1. この設定を定義します。

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

  2. IDにアクセスします。

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

    profile_id = social.extra_data ['id']

于 2012-05-07T22:46:59.417 に答える