Googleの連携ログイン(OpenIDの+のOauth)ホストされるアプリケーションのために - エンドポイントを変更しますか?

StackOverflow https://stackoverflow.com/questions/1543123

質問

私は最高の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つのクエリ文字列が一度に存在することはありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top