まず、「IAuthenticationClient」インターフェイスを実装する「MicrosoftScopedClient」クラスを実装する必要があります。これは、インターフェイスの 2 つのメソッドを実装する必要があります。
public class MicrosoftScopedClient : IAuthenticationClient { //Web.Config ファイルで次の 3 つのキーを定義し、コードで使用すると、コードの一貫性が維持されます。プライベート文字列 clientId; プライベート文字列 clientSecret; プライベート文字列スコープ;
private const string baseUrl = "https://login.live.com/oauth20_authorize.srf";
private const string tokenUrl = "https://login.live.com/oauth20_token.srf";
public void RequestAuthentication(HttpContextBase context, Uri returnUrl)
{
//Getting values of clientId, clientSecret and scope from Web.Config file
clientId=System.Configuration.ConfigurationManager.AppSettings["msClientId"].ToString();
clientSecret=System.Configuration.ConfigurationManager.AppSettings["msClientSecret"].ToString();
scope=System.Configuration.ConfigurationManager.AppSettings["msScope"].ToString();
string url = baseUrl + "?client_id=" + clientId + "&redirect_uri=" + HttpUtility.UrlEncode(returnUrl.ToString()) + "&scope=" + HttpUtility.UrlEncode(scope) + "&response_type=code";
//this will authenticate the user and register(only if user visited first time).
context.Response.Redirect(url);
}
public AuthenticationResult VerifyAuthentication(HttpContextBase context)
{
string code = context.Request.QueryString["code"];
string rawUrl = context.Request.Url.ToString();
//removing code portion
rawUrl = Regex.Replace(rawUrl, "&code=[^&]*", "");
IDictionary<string, string> userData = GetUserData(code, rawUrl);
if (userData == null)
return new AuthenticationResult(false, ProviderName, null, null, null);
string id = userData["id"];
string username = userData["email"]; // here you'll get email id of user
userData.Remove("id");
userData.Remove("email");
AuthenticationResult result = new AuthenticationResult(true, ProviderName, id, username, userData);
return result;
}
}
////// 最後に、すべてのものを AuthConfig.cs に登録し、アプリケーションを通じて Microsoft と対話する必要があります。OAuthWebSecurity.RegisterClient(new MicrosoftScopedClient(System.Configuration.ConfigurationManager.AppSettings["msClientId"].ToString(), System.Configuration.ConfigurationManager.AppSettings["msClientSecret"].ToString(), "wl.basic wl.emails" ) 、「マイクロソフト」、null);