G +プロファイルへのリダイレクトには、「https://plus.google.com/<\profile_id>/posts」形式が必要です。私の問題は、サイトのユーザーに対してprofile_idを動的に取得する方法に関する解決策が見つからないことです。django-social-authの現在の実装(データベースに保存されていない)ではフェッチされず、google-oauth2アカウントレコードのUIDフィールドはgoogleメールを保存します。おそらく、にリダイレクトする方法の実装を見つけることができれば電子メールを使用したG+プロファイル、それは問題ありません(一部の情報源は現在それが不可能であると言っていますが)。
2001 次
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によって送信されるデータの一部です。これを保存して、アクセスする方法は次のとおりです。
この設定を定義します。
GOOGLE_OAUTH2_EXTRA_DATA = [('id'、'id')]
IDにアクセスします。
social = user.social_auth.get(provider ='google-oauth2')
profile_id = social.extra_data ['id']
于 2012-05-07T22:46:59.417 に答える