再びこのに見た後、私は答えた:私は、このページからこれらの値を見つけ
authPlugins _ = [authOpenIdExtended [("openid.ns.ax", "http://openid.net/srv/ax/1.0"),
("openid.ax.mode", "fetch_request"),
("openid.ax.type.email", "http://axschema.org/contact/email"),
("openid.ax.required", "email")
]]
:https://developers.google.com/accounts/docs/OpenIDし、それらを検証し
はまず、我々は右のパラメータでauthOpenIdExtendedを使用する必要がありますがGoogleとYahooと連携する
次に、取得した電子メールアドレスを使用するために、getAuthIdに渡されたcredsパラメータの "credsExtra creds"を呼び出します。これにより、OpenIdプロバイダからの応答を含むタプルのリストが得られます。上記のパラメータをauthOpenIdExtendedに使用すると、値が「openid.ax.value.email」(Yahooの場合)または「openid.ext1.value.email」(Googleの場合)という値を持つキー/値タプルでメールが検索されます。私はGoogleも "openid.ax.value.email"キーを使うことを期待していましたが、十分に近いです。
私はこれが誰かを助けてくれることを願っています。
私はauthOpenIdExtended(GoogleEmail.hsのオプションのリストをコピーする)の使い方を理解していると思いますが、ハンドラに戻ったらメールアドレスを取得する方法はわかりません。 GoogleEmail.hsのlookupGetParamが呼び出されましたが、私のコードに戻ってしまったのは遅すぎですね。私は何が起こっているのを誤解していますか?それが問題なら、私はyesod-auth 1.0.1を使用しています(新しいものは動作しません)。 –
あなたはまた重要な何かのために電子メールアドレスを使用しないことについて非常に良い点を作る。私のIDはOpenIdを介して返されたIDに基づいています。私は便宜のために電子メールアドレスを取得したいだけです。 –
私はauthOpenIdExtended経由で試したことはありませんが、[credsExtra](http://hackage.haskell.org/packages/archive/yesod-auth/1.0.2/doc/html/Yesod-Auth.html#v :credsExtra)に必要な情報があります。 –