2012-05-02 8 views
1

G +プロフィールにリダイレクトするには、 "https://plus.google.com/ </profile_id>/posts"の形式が必要です。私の問題は、サイトのユーザーに対してprofile_idを動的に取得する方法の解決策が見つかりませんでした。現在のdjango-social-auth(データベースには保存されていない)の実装では取得されません。google-oauth2アカウントのUIDフィールドはGoogleのメールを保存します。 G +プロフィールをメールで送信すると、それは問題ありませんdjango-social-authを使用してgoogle plusのユーザープロフィールを表示/リダイレクトする方法は?

答えて

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

2

ユーザIDがでGoogleが送信されたデータの一部であり、より完全な例を見つけることができますOAuth2のワークフローは、ここにあなたがそれを格納し、それをアクセスすることができます方法は次のとおりです。

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

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

  2. アクセスID:

    社会= user.social_auth.get(プロバイダ= 'GoogleとのOAuth2を')

    PROFILE_ID = social.extra_data ['id']

+0

解決策は短く、機能します。ありがとうOmab :) – Leonid

関連する問題