Facebook c# sdk get users email

浪子不回头ぞ 提交于 2019-12-05 02:10:33

问题


I have a site which is using facebook for auth. I want to gather some basic info when a user signs up including their email address.

The code i have for the login is standard:

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);
    }

How do i add the request to access permissions in that? Or do i do it another way?


回答1:


You need to use the email permission (the full list is here: http://developers.facebook.com/docs/authentication/permissions/ )

The way to add permissions to the authorization is by appending a comma separated list to &scope= , e.g.:

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


Update: As you marked, the parameters are passed to the GetLoginUrl() method, although in the codeplex forum they also used ExchangeCodeForAccessToken(), which you might want to take a look at also.

A couple of examples using the 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




回答2:


A snoop at the sdk code and i came up wiht:

 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);
    }

not tested it yet and the missus is shouting at me for working late so will have to test tomoz :)



来源:https://stackoverflow.com/questions/5625532/facebook-c-sharp-sdk-get-users-email

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!