在redirect_uri中使用查询字符串进行Facebook身份验证

时间:2017-03-12 20:38:39

标签: facebook facebook-authentication

我试图让我的facebook身份验证在我的网站上使用重定向网址。

我实现了通常的模式,如果用户尝试导航到受限制的页面,他/她会被重定向到带有查询字符串的登录页面。

让我们说用户试图去: http://www.example.com/restrictedPage

用户将被重定向到: http://www.example.com/Login?returnUrl=/restrictedPage

如果用户成功登录,他/她将被重定向到最初请求的页面。

这在使用我的网站自己的身份验证时效果很好,但我无法使用facebook身份验证。

在登录页面上,除了通常的登录表单外,我还有一个用于登录facebook的链接。这就是它在上面相同的场景中的样子(当用户试图转到/ restrictedPage时):

(我已插入换行符以便于阅读)

https://www.facebook.com/v2.8/dialog/oauth
?client_id={client id}
&redirect_uri=http%3a%2f%2fwww.example.com%2fLogin%2fLoginUsingFacebook%3freturnUrl%3d%2frestrictedPage
&scope=public_profile,email,user_friends

当用户登录到facebook时,他/她将按预期重定向到指定页面(/ Login / LoginUsingFacebook)。现在我向facebook发出请求以检索访问令牌:

/oauth/access_token
?client_id={client id}
&redirect_uri=http%3a%2f%2fwww.example.com%2fLogin%2fLoginUsingFacebook%3freturnUrl%3d%2frestrictedPage
&client_secret={client secret}
&code={code}

这不起作用,我收到来自facebook的错误消息:

"验证验证码时出错。请确保您的redirect_uri与您在OAuth对话框请求中使用的redirect_uri相同"

应该注意的是,如果我没有returnUrl部分(即,如果用户直接进入登录页面),它可以正常工作。所以我很确定returnUrl查询字符串就是问题所在。但我不明白问题所在。链接和请求中的URL是相同的。 Facebook不允许查询字符串吗?

(如果重要的话,我的Web应用程序使用ASP.NET MVC 5构建)

0 个答案:

没有答案