Facebook授权重定向到移动设备上“找不到您请求的页面”

时间:2012-09-24 22:51:25

标签: facebook

我一直在建立一个社交礼品平台,并且已经有一个应用程序运行了几个月了:http://egift.me/promos/venue/facebookconnect

应用程序有一个简单的用户流程。单击登录/连接Facebook按钮,登录和/或授权应用程序,然后您将被重定向到“谢谢/确认”样式页面。

如果我在标准浏览器上执行此操作,我没有任何问题。如果我在移动设备上逐步完成此操作,我最终会得到可爱的“您找不到的页面”页面。

我没有配置移动网址网址,我只是使用Facebook登录网站。即使我尝试添加移动网址(它是相同的基本URL,我使用View Switching来提供桌面与移动优化视图),我也会遇到同样的问题。

任何人都知道发生了什么事吗?我可以提供任何其他信息吗?

[UPDATE]

这有效(请务必更改范围):

//instead of onClick could just as easily use something like jQuery event binding
<button onClick="loginUser();">Login</button>
<script type="text/javascript">
function loginUser() {
    FB.login(function (response) { }, { scope: 'YOUR_SCOPE_HERE' });
}

FB.getLoginStatus(function (response) {
    FB.Event.subscribe('auth.authResponseChange', handleResponse);
});
handleResponse = function (response) {
    document.body.className = response.authResponse ? 'connected' : 'not_connected';
    if (response.status === 'connected') {
        // the user is logged in and has authenticated your
        // app, and response.authResponse supplies
        // the user's ID, a valid access token, a signed
        // request, and the time the access token 
        // and signed request each expire
    } else if (response.status === 'not_authorized') {
        // the user is logged in to FB, but has not yet authenticated your app
    } else {
        // the user is not logged in to FB
    }
};
</script>

1 个答案:

答案 0 :(得分:1)

对于移动网络应用,我建议您通过SDK本身而不是使用登录按钮来使用FB.login。如果没有别的,它可以让您对用户流程进行更大程度的控制。经验。

规范的“最简单的社交应用”片段是:

FB.login(function(response) {
  if (response.authResponse) {
    console.log('Fetching user info');
    FB.api('/me', function(response) {
      console.log('Hello ' + response.name + '!');
     });
  } else {
     console.log('User cancelled login or did not fully authorize');
  }
});

此外,您还要为插件添加JS SDK,因此没有负载开销。有关FB.login的更多详细信息,请访问:https://developers.facebook.com/docs/reference/javascript/FB.login/