OAuth 登録/ログインを ASP.NET MVC 4 サイトに統合しようとしています。ただし、ログイン後にユーザーの ID やユーザー名を取得するのに問題があります。ログインのために、私は持っています:
AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
if(result.IsSuccessful)
{
if(OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false))
{
string username = User.Identity.Name;
int userID = WebSecurity.CurrentUserId;
}
}
OAuthWebSecurity.Login は成功しますが (true を返します)、username は空の文字列に設定され、userID は -1 に設定されます (つまり、誰もログインしていません)。ログイン関数がtrueを返す間のこの不一致を説明できる人はいますが、現在のユーザーを決定するこれら2つの方法はそうではありませんか? または、OAuth ログイン後に UserId (UserProfile テーブルに対応する) を見つける方法を教えてください。
このログイン構造の大部分は、MVC 4 インターネット アプリケーションの起動時に指定されるデフォルトのメンバーシップ コードからのものです。