2011-04-11 136 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

相關問題