dotnetopenauth 3.2 を使用して Openid を実装していますが、クレーム応答で Google にメール アドレスを渡す方法がわかりません。Google が単純な登録をサポートしていないことは知っていますが、Google が何をサポートしているのかはわかりません。
この質問に対する警告は、私が OpenID の学習を始めたばかりであり、仕様をしっかりと把握していないことを知っていることです。これが混乱につながっていると思います。
どんな助けでも大歓迎です!
dotnetopenauth 3.2 を使用して Openid を実装していますが、クレーム応答で Google にメール アドレスを渡す方法がわかりません。Google が単純な登録をサポートしていないことは知っていますが、Google が何をサポートしているのかはわかりません。
この質問に対する警告は、私が OpenID の学習を始めたばかりであり、仕様をしっかりと把握していないことを知っていることです。これが混乱につながっていると思います。
どんな助けでも大歓迎です!
わかりました。Goolge の Federated Log API グループに質問を投稿したところ、 Attribute exchangeを使用するように言われました。
以下はDotNetOpenAuthのコードです。
このコードを本番環境で使用しないでください。これは説明のみを目的としています。
リクエスト:
using (OpenIdRelyingParty openid = new OpenIdRelyingParty())
{
IAuthenticationRequest request = openid.CreateRequest(openidurl);
var fetch = new FetchRequest();
fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
request.AddExtension(fetch);
// Send your visitor to their Provider for authentication.
request.RedirectToProvider();
}
応答:
OpenIdRelyingParty openid = new OpenIdRelyingParty();
var response = openid.GetResponse();
if (response != null)
{
switch (response.Status)
{
case AuthenticationStatus.Authenticated:
{
var fetch = response.GetExtension<FetchResponse>();
string email = string.Empty();
if (fetch != null)
{
email = fetch.GetAttributeValue(
WellKnownAttributes.Contact.Email);
}
FormsAuthentication.RedirectFromLoginPage(
response.ClaimedIdentifier, false);
break;
}
...
}
}
氏名を取得しようとすると、応答が null です。氏名を取得するための解決策を提供してください。この投稿は本当に役に立ちます ありがとう。このような私のサンプルコード。
var fetch = new FetchRequest();
fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
fetch.Attributes.AddRequired(WellKnownAttributes.Name.FullName);
fetch.Attributes.AddRequired(WellKnownAttributes.Company.CompanyName);
//fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
request.AddExtension(fetch);
と
if (fetch != null)
{
email = fetch.GetAttributeValue(WellKnownAttributes.Contact.Email);
name = fetch.GetAttributeValue(WellKnownAttributes.Name.FullName);
company = fetch.GetAttributeValue(WellKnownAttributes.Company.CompanyName);
}