我有一个示例应用程序,托管在 AppHarbor 上,现在想通过 facebook 集成授权。所以我下载了 nugget Facebook.Web.Mvc 包来实现它。
阅读教程后,在控制器中我有方法:
public ActionResult Login(string returnUrl)
{
var oauthClient = new FacebookOAuthClient(FacebookApplication.Current) { RedirectUri = GetFacebookRedirectUri() };
if (!string.IsNullOrWhiteSpace(returnUrl))
{
returnUrl = Url.Action("Index", "Facebook");
}
dynamic parameters = new ExpandoObject();
parameters.scope = ExtendedPermissions;
var state = new { csrf_token = CalculateMD5Hash(Guid.NewGuid().ToString()), return_url = returnUrl };
parameters.state = Base64UrlEncode(Encoding.UTF8.GetBytes(JsonSerializer.Current.SerializeObject(state)));
SetFacebookCsrfToken(state.csrf_token);
string s = oauthClient.GetLoginUrl(parameters).AbsoluteUri;
ViewBag.FacebookLoginUrl = s;
//new LogEvent(s).Raise();
return View(new AccountModel());
}
看法:
<a href="@ViewBag.FacebookLoginUrl" id="lUrl">
<div class="fblogin"></div>
在 localhost 这对我有用。但是当我将它上传到 appharbor 时,我看到,生成的链接指示地址 + 端口 16013(因为支持总是告诉随机端口)。因此,单击它会显示 Facebook 登录窗口,而不是空白页面。
我在 facebook 中手动将我的应用程序设置配置到此端口,但没有帮助。
我也试图通过这个端口访问我的网站 - 没有。
然后我通过jquery将端口号更改为80,它也没有帮助。
你有过这样的问题吗?