Googleの連携ログイン(OpenIDの+のOauth)ホストされるアプリケーションのために - エンドポイントを変更しますか?
-
20-09-2019 - |
質問
私は最高のAppsアカウントでGoogleの連携ログインを統合しようとしているが、私はいくつかの問題を抱えている。
私はリクエストを送信すると、:すべてのパラメータを持つhttps://www.google.com/accounts/o8/ud
(下記参照)、私は戻ってrequest_token
によりを求めた属性のAttribute Exchange
とリストの両方を取得します。我々はアプリケーション・データベース内のユーザーを格納する属性exhange(AX)を介して電子メールを必要とし、我々は将来API requests to scopes
のためにリクエストトークンを必要とするので、これは、完璧です。(例:カレンダー、連絡先など)
しかし、そのホストされたアプリケーション(Gmail、カレンダー、ら)にログインしたユーザを保持しない(本明細書endpoint
と呼ぶ)そのURLを使用して、問題となっています。
https://www.google.com/a/thedomain.com/o8/ud?be=o8
するエンドポイントを変更すべてを変えます。私は、自動的に他のGoogleアプリ(Gmailのなど)に署名しています。しかし、そのエンドポイントを使用して、私は唯一のリクエストトークンAXを経由しての のかがの属性を取得します。明らかに、特にハイブリッドではないthatsの。その非常に多く、どちらか一方ます。
例要求エンドポイントhttps://www.google.com/accounts/o8/ud
に
parameters = {
'openid.ns': 'http://specs.openid.net/auth/2.0',
'openid.claimed_id': 'http://specs.openid.net/auth/2.0/identifier_select',
'openid.identity': 'http://specs.openid.net/auth/2.0/identifier_select',
'openid.return_to':'http://our.domain.com/accounts/callback/',
'openid.realm': 'http://our.domain.com/',
'openid.assoc_handle': assoc_handle,
'openid.mode': 'checkid_setup',
'openid.ns.ext2': 'http://specs.openid.net/extensions/oauth/1.0',
'openid.ext2.consumer': 'our.domain.com',
'openid.ext2.scope': 'https://mail.google.com/mail/feed/atom',
'openid.ns.ax':'http://openid.net/srv/ax/1.0',
'openid.ax.mode':'fetch_request',
'openid.ax.required':'firstname,lastname,email',
'openid.ax.type.firstname':'http://axschema.org/namePerson/first',
'openid.ax.type.lastname':'http://axschema.org/namePerson/last',
'openid.ax.type.email':'http://axschema.org/contact/email',
}
return HttpResponseRedirect(end_point + '?' + urllib.urlencode(parameters))
(assoc_handleが以前OpenIDの最初の要求により正常に設定されている)
私が最も不透明なエラーメッセージ(This page is invalid
...ありがとうグーグル)と一貫性のあるドキュメントの欠如を戦って、このHybirdアプローチの作業を取得しようとする日のために苦労してきました。私はこのポイントを取得するために私ができるすべてのコードサンプルをトロールしました。任意の助けをいただければ幸いです...
解決
、レコード、後世、およびこれのバラバラ来るかもしれない他の誰のために、私は(とんでもない)の回答を文書化します。
最終的には、問題が呼んでいた。
return HttpResponseRedirect(
'https://www.google.com/a/thedomain.com/o8/ud?be=o8'
+ '?'
+ urllib.urlencode(parameters)
)
あなたはそれを見つけることができますか?うん、それは問題の原因となった疑問符を明示的に含めることでした。 2つのクエリ文字列が一度に存在することはありません。