3

標準のボイラープレート ASP.NET MVC 4 インターネット プロジェクトを作成しました。OAuthWebSecurity を使用して Web サイトが Facebook でソーシャル ログインできるようにすると、AuthenticationResult の ExtraData にアクセスすることで、AccountController の ExternalLoginCallback() アクションで Facebook ユーザー名にアクセスする方法がわかります。

    AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication( Url.Action( "ExternalLoginCallback", new { ReturnUrl = returnUrl } ) );

    var facebookName = result.ExtraData["name"];

ただし、Google でログインする場合、ExtraData には「メール」のみが含まれます。Google ユーザー名を取得することはできますか? どこかに設定の微調整がありませんか?

4

1 に答える 1

2

ここで私の答えを見つけました: Pluging custom OAuth/OpenID providers。これは 2012 年 8 月以降の既知の問題であり、まだ (DotNetOpenAuth.AspNet 4.2.2.13055、2013 年 4 月) 修正されていません。

回避策は、独自の Google プロバイダーを作成することです。上記のブログ投稿には、完全に機能する例が含まれています。次に、Google ユーザー名を取得するのは簡単です。

var googleName = result.ExtraData["firstName"] + " " + result.ExtraData["lastName"];
于 2013-04-17T21:48:40.183 に答える