2011-04-11 135 views
3

我有一个网站是使用Facebook的身份验证。我想在用户注册时收集一些基本信息,包括他们的电子邮件地址。Facebook的c#sdk获取用户的电子邮件

代码中,我有登录为标准:

public ActionResult Login(string returnUrl) 
    { 
     var oAuthClient = new FacebookOAuthClient(); 
     oAuthClient.AppId = AppSettings.GetConfigurationString("appId"); 
     oAuthClient.RedirectUri = new Uri(AppSettings.GetConfigurationString("redirectUrl")); 
     var loginUri = oAuthClient.GetLoginUrl(new Dictionary<string, object> { { "state", returnUrl } }); 
     return Redirect(loginUri.AbsoluteUri); 
    } 

我如何请求增加访问权限的呢?或者我以另一种方式做它?

+0

不完全重复,但沿着相同的路线:[Facebook的连接,电子邮件地址?](http://stackoverflow.com/questions/2986578/facebook-connect-email-address) – Rup 2011-04-11 18:15:31

回答

5

在SDK代码和探听我想出了室内用:

public ActionResult Login(string returnUrl) 
    { 
     var oAuthClient = new FacebookOAuthClient(); 
     oAuthClient.AppId = AppSettings.GetConfigurationString("appId"); 
     oAuthClient.RedirectUri = new Uri(AppSettings.GetConfigurationString("redirectUrl")); 

     var parameters = new Dictionary<string, object>(); 
     parameters["state"] = returnUrl; 
     parameters["scope"] = "email"; 

     var loginUri = oAuthClient.GetLoginUrl(parameters); 
     return Redirect(loginUri.AbsoluteUri); 
    } 

未测试编辑它还没有,因为工作到很晚,所以将要测试tomoz :)

+0

Thx 4 help .. :) – rafek 2011-05-24 18:33:52

10

您需要使用email许可(完整的列表在这里:http://developers.facebook.com/docs/authentication/permissions/

权限添加到授权的方式是通过附加一个逗号分隔的列表&scope=,如:

https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=email,read_stream


更新:当你标记,这些参数传递给GetLoginUrl()方法,尽管在codeplex论坛上他们也使用了ExchangeCodeForAccessToken(),你可能也想看看。

一对夫妇的使用C#SDK中的例子:

http://blog.prabir.me/post/Facebook-CSharp-SDK-Writing-your-first-Facebook-Application.aspx

Facebook .NET SDK: How to authenticate with ASP.NET MVC 2

http://facebooksdk.codeplex.com/discussions/244568

+0

是的 - 我需要知道如何使用c#facebook sdk:http://facebooksdk.codeplex.com/ – iwayneo 2011-04-11 18:36:01

相关问题