我正在尝试使用HTTP重定向为Web应用程序实现简单的Facebook登录流程,详见https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/v2.2。
为了使此问题具有通用性,我们假设应用程序URL为www.example.com/app.php
。在应用程序页面上,有一个链接可以将用户引导到Facebook的OAuth端点,理想情况下:
www.example.com/app.php?code=...&access_token=...
;如果登录/应用程序批准不成功,则为www.example.com/app.php?error_reason=...&error=...&error_description=...
< / LI>
Facebook OAuth端点是:
www.facebook.com/dialog/oauth?client_id=12345&redirect_uri=www.xyz.com/app.php
我已将client_id
和redirect_uri
参数分别填入我的应用程序ID和我的应用程序的URL。
每当我访问该链接时,实际发生的是它会立即重定向回我的应用程序的主页 - 而不会显示任何类型的登录对话框。这种情况发生在Firefox和Chrome上 - 无论是在我登录Facebook时还是在我没有,在正常会话和未启用插件的隐身会话中。从浏览器检查器中,我可以看到Facebook OAuth页面肯定是请求的,但是立即302重定向到我的应用程序页面,只附加了code
参数。
www.example.com/app.php?code=...
当从我的应用程序的URL以外的页面访问Facebook OAuth链接时也会发生这种情况(例如,如果我点击www.example.com/other_page.htm
中的链接)。
我不确定我在这里做错了什么;应用程序网址(www.example.com/app.php
)已在我的应用信息中心的许多位置获得批准,并且将request_uri
参数更改为任何其他网址会导致出现错误页面。在将urlencode()
参数传递给我之前,我还尝试request_uri
我的应用程序URL,但结果保持不变。我不知道下一步该尝试什么,据我所知,我已尽可能地遵循Facebook的手动登录指南。