【发布时间】:2011-02-22 07:30:02
【问题描述】:
我正在尝试掌握 Facebook SDK,同时从 ASP.NET 表单过渡到 MVC(最终)。所以请多多包涵..
我创建了两个控制器动作:
当用户单击表单上的 FB 登录按钮时,将执行 FBLogon。 然后他被重定向到 FB 登录页面。
之后,他被发送回 FBAuthorize 页面,该页面应该解析返回的 url 以获取访问令牌。我得到类似的东西:
我看到的问题是,由于 access_token 在 # 后面传递,asp.net 无法在服务器上解析它。我做错了什么?
代码如下:
public ActionResult FBLogon()
{
var settings = ConfigurationManager.GetSection("facebookSettings");
IFacebookApplication current = null;
if (settings != null)
{
current = settings as IFacebookApplication;
if (current.AppId == "{app id}" || current.AppSecret == "{app secret}")
{
return View();
}
}
string[] extendedPermissions = new[] { "publish_stream", "offline_access" };
var oauth = new FacebookOAuthClient { ClientId = current.AppId, RedirectUri = new Uri("http://localhost:5000/account/FBAuthorize") };
var parameters = new Dictionary<string, object>
{
{ "response_type", "token" },
{ "display", "page" }
};
if (extendedPermissions != null && extendedPermissions.Length > 0)
{
var scope = new StringBuilder();
scope.Append(string.Join(",", extendedPermissions));
parameters["scope"] = scope.ToString();
}
var loginUrl = oauth.GetLoginUrl(parameters);
return Redirect(loginUrl.ToString());
}
public ActionResult FBAuthorize()
{
FacebookOAuthResult result;
if (FacebookOAuthResult.TryParse(Request.Url, out result))
{
if (result.IsSuccess)
{
var accesstoken = result.AccessToken;
}
else
{
var errorDescription = result.ErrorDescription;
var errorReason = result.ErrorReason;
}
}
return View();
}
【问题讨论】:
标签: c# facebook authentication facebook-c#-sdk