我有一个使用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);
}
如何添加访问权限的请求?或者我是以另一种方式做到的?
答案 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
答案 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:)