0

我一直在构建一个社交送礼平台,并且已经在以下位置运行了几个月的应用程序:http://egift.me/promos/venue/facebookconnect

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

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

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

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

[更新]

这有效(一定要改变你的范围):

//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>
4

1 回答 1

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/

于 2012-09-25T18:20:09.893 回答