python-social-auth
でDjangoのスコープを追加することは、そのままではありませんが、(two ways described here)のどちらでも難しくありません。私は最初のオプションを選択し、get_scope
メソッドを上書きしました。 views.py
で
、私は
flow = client.flow_from_clientsecrets(
CLIENT_SECRET_FILE,
scope=SOCIAL_AUTH_GOOGLE_OAUTH2_SCOPES,
redirect_uri='https://yourdomain.com/callbacklinkforgmail')
を設定し、redirect_uri
は、GoogleのコンソールにリダイレクトされたURLと一致する必要があります。
要求のアクセス許可は、どこかに格納された資格情報に基づいて行われます。私の場合は、モデルです。
# model with variable/column 'credentials'
storage = Storage(YourModel, 'id', request.user, 'credentials')
credential = storage.get()
if credential is None or credential.invalid is True:
flow.params['state'] = xsrfutil.generate_token(SOCIAL_AUTH_GOOGLE_OAUTH2_KEY,
request.user)
authorize_url = flow.step1_get_authorize_url()
return HttpResponseRedirect(authorize_url)
else:
http = credential.authorize(httplib2.Http())
service = discovery.build('gmail', 'v1', http=http)
このステップが行われ、一致を確認する機能にredirect_uri
をリダイレクトします。私の場合、これはviews.py
です。私のアプリのurls.py
で
@login_required
def auth_return(request):
if not xsrfutil.validate_token(SOCIAL_AUTH_GOOGLE_OAUTH2_KEY, request.GET['state'].encode('utf-8'), request.user):
return HttpResponseBadRequest()
credential = flow.step2_exchange(request.GET)
storage = Storage(YourModel, 'id', request.user, 'credentials')
storage.put(credential)
return HttpResponseRedirect("/")
とエントリ
url(r'^callbacklinkforgmail/$', views.auth_return, name='mailsend')
クライアントIDを使用して、有効APIセクションで有効になっているすべてのAPIにアクセスすることがあります。ユーザーがスコープの電子メール(私はそれが1つまたはgmailだと思う)で認証する限り、あなたは好きなだけ多くのAPIに同じクライアントIDを使用できます。あなたがアクセスできるものを決める認証の範囲。上記のメッセージは私にはあまり言いません。詠唱のYouTube動画を見ることができます:) – DaImTo
@DaImTo現在私の唯一の定義されたスコープは[''https://www.googleapis.com/auth/gmail.send''](https://developers.google.com/gmail/api/auth /スコープ)。私はどこに "ログイン"スコープを追加することができます(前のリンクを参照してください)が表示されません。その動画を自分で見たいですか?編集:ハム、多分[this](https://developers.google.com/identity/protocols/googlescopes)、特にGoogle Sign-Inの 'profile'と' login'ですか? –
これはしばらくしていますが、ログインはこれに加えてhttps://developers.google.com/+/web/api/rest/oauthになっていると思います。btw Gmailは苦痛で、私はパイソン人ではないことを指摘しようとしています正しい方向に – DaImTo