5

dotNetOpenId で GMail アカウントにログインしようとしています。動作しますが、クレームを取得できません。電子メール アドレスやユーザー名も取得できることはわかっていますが、クレームは返されず、ClailedIdentifierのみが利用可能です。Gmail アカウントからこのデータを取得する方法を知っている人はいますか? ClaimsRequest 構成の例を教えていただければ幸いです。

ありがとう

4

1 に答える 1

2
// Either you're creating this already or you can get to it in 
// the LoggingIn event of the control you're using.

IAuthenticationRequest request;

// Add the AX request that says Email address is required.
var fetch = new FetchRequest();
fetch.Attributes.Add(
    new AttributeRequest(WellKnownAttributes.Contact.Email, true));
request.AddExtension(fetch);

次に、Googleはユーザーを認証し、次の方法で取得できるメールアドレスを返します。

var fetch = openid.Response.GetExtension<FetchResponse>();  
if (fetch != null) 
{  
    IList<string> emailAddresses = fetch.GetAttribute(
        WellKnownAttributes.Contact.Email).Values;  
    string email = emailAddresses.Count > 0 ? emailAddresses[0] : null;  
}

もう少し詳しくは、この件に関する私のブログ投稿をご覧ください。ここで注意すべき重要なことは、Googleは、ユーザーのメールアドレスを必須としてマークした場合にのみユーザーのメールアドレスを通知することです(上記のスニペットで行ったように)。ただし、これは、ユーザーが自分の電子メールアドレスを共有したくない場合、ログインできないことも意味します。申し訳ありませんが、それはGoogleが設定した方法です。残念ながら、人々が使用する他のプロバイダーの動作は異なります。

于 2009-04-10T13:43:51.930 に答える