DotNetOpenAuth and Hotmail Sign In
本文关键字:In Sign Hotmail and DotNetOpenAuth | 更新日期: 2023-09-27 18:36:56
如何使用DotNetOpenAuth检索Hotmail的登录电子邮件ID
我已经从示例中尝试了此代码,它给出了名称而不是电子邮件ID
IAuthorizationState authorization = client1.ProcessUserAuthorization(null);
if (authorization == null)
{
// Kick off authorization request
client1.RequestUserAuthorization(new[] { WindowsLiveClient.Scopes.Basic, "wl.emails" }, new Uri("http://localhost/SignIn.aspx")); // this scope isn't even required just to log in
}
else
{
var request = WebRequest.Create("https://apis.live.net/v5.0/me?access_token=" + Uri.EscapeDataString(authorization.AccessToken));
using (var response = request.GetResponse())
{
using (var responseStream = response.GetResponseStream())
{
var graph = WindowsLiveGraph.Deserialize(responseStream);
//this.nameLabel.Text = HttpUtility.HtmlEncode(graph.Name);
}
}
}
您需要将
另一个项目添加到Scope
类
/// <summary>
/// Well-known scopes defined by the Windows Live service.
/// </summary>
/// <remarks>
/// This sample includes just a few scopes. For a complete list of scopes please refer to:
/// http://msdn.microsoft.com/en-us/library/hh243646.aspx
/// </remarks>
public static class Scopes
{
/// <summary>
/// The ability of an app to read and update a user's info at any time. Without this scope, an app can access the user's info only while the user is signed in to Live Connect and is using your app.
/// </summary>
public const string OfflineAccess = "wl.offline_access";
/// <summary>
/// Single sign-in behavior. With single sign-in, users who are already signed in to Live Connect are also signed in to your website.
/// </summary>
public const string SignIn = "wl.signin";
/// <summary>
/// Read access to a user's basic profile info. Also enables read access to a user's list of contacts.
/// </summary>
public const string Basic = "wl.basic";
/// <summary>
/// Read access to a user's personal, preferred, and business email addresses.
/// </summary>
public const string Email = "wl.emails";
}
然后,您可以使用以下代码在正确的作用域中传递 - 从示例中可以看出,您可以在两个或多个作用域中传递。您可以在此处找到所提供示波器的详细信息。
var windowsiveClient = WindowsLiveClient.Instance();
var authorization = windowsiveClient.ProcessUserAuthorization();
if (authorization == null)
{
// Kick off authorization request
windowsiveClient.RequestUserAuthorization(scope: new[] { WindowsLiveClient.Scopes.Email, WindowsLiveClient.Scopes.Basic });
// retuning null will force the page to redirect to Windows Live and as we have not specified a callback if authorized will
// return back to the calling URL - in this instance the 'AttemptSignInForWindowLiveOpenId' controller action.
return null; //
}
WindowsLiveGraph windowsLiveModel;
var windowsLiveRequest = WebRequest.Create(string.Format("https://apis.live.net/v5.0/me?access_token={0}", Uri.EscapeDataString(authorization.AccessToken)));
using (var response = windowsLiveRequest.GetResponse())
{
using (var responseStream = response.GetResponseStream())
{
windowsLiveModel = WindowsLiveGraph.Deserialize(responseStream);
}
}