Facebook c#sdk让用户收到电子邮件

时间:2011-04-11 18:09:36

标签: facebook oauth facebook-c#-sdk

我有一个使用facebook进行身份验证的网站。我希望在用户注册时收集一些基本信息,包括他们的电子邮件地址。

我登录的代码是标准的:

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

如何添加访问权限的请求?或者我是以另一种方式做到的?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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);
    }

还没有测试过,而且missus正在大喊我工作到很晚,所以必须测试tomoz:)

相关问题