1

当用户单击共享按钮时,我创建了一个自定义故事以发布在 facebook 时间轴上。

当我登录 facebook 时,我可以使用以下代码成功地在时间轴上发布

function postLike() {
    FB.api(
   'https://graph.facebook.com/me/og_pricepan:compared',
   'post',
   { product: objectToLike,
       privacy: { 'value': 'SELF'}
   },
   function (response) {
       if (!response) {
           alert('Error occurred.');
       } else if (response.error) {
           document.getElementById('result').innerHTML =
         'Error: ' + response.error.message;
       } else {
           document.getElementById('result').innerHTML =
         '<a href=\"https://www.facebook.com/me/activity/' +
         response.id + '\">' +
         'Story created.  ID is ' +
         response.id + '</a>';
       }
   }
);

现在,当用户未登录 facebook 时,我收到以下错误:

错误:必须使用活动访问令牌来查询有关当前用户的信息。

  1. 登录窗口不应该自己打开,要求用户登录 facebook,或者我需要在我的末端做一些事情来处理这种情况?

  2. 另外,在用户可以从我的网站创建自定义故事到他们的时间线之前,我是否需要提交我的申请以供审核?

4

1 回答 1

2

登录窗口不应该自己打开,要求用户登录 facebook,或者我需要在我的末端做一些事情来处理这种情况?

不可以。您需要按照Facebook 登录流程明确登录用户以请求访问令牌

另外,在用户可以从我的网站创建自定义故事到他们的时间线之前,我是否需要提交我的申请以供审核?

是和否。不,因为您不会让 Facebook 支持团队的人员检查您的应用程序以确保您的应用程序符合所有条件。是的,因为您需要在 Facebook 注册您的应用程序。因此,从技术上讲,您只需在 Facebook 注册为开发人员并注册您的应用程序,以获得应用程序密钥和 API 密钥。您可以让您的应用程序处于“沙盒模式”,创建测试用户并在发布之前测试您与 Facebook 的集成。在发布之前您需要满足一些要求,例如提供一组特定大小的徽标等。这是一个解释部分过程的博客,但实际上,该过程非常简单,您应该能够得到自己轻松通过。

现在,你得到的错误说明了一切。没有用户登录到 facebook。您尝试发布到的端点需要一个有效的有效访问令牌,如果它不存在则没有上下文,没有用户经过身份验证,您需要通过调用登录对话框显式验证用户...

FB.login(function(response) {
    if (response.authResponse) {
        // The person logged into your app
    } else {
        // The person cancelled the login dialog
    }
});

如果您需要知道用户是否登录,您可以遵循简单的方法:

1.通过调用FB.getLoginStatus函数

FB.getLoginStatus(function(response) {
   if (response.status === 'connected') {
     var uid = response.authResponse.userID;
     var accessToken = response.authResponse.accessToken;
   } 
   else if (response.status === 'not_authorized') {
       // the user is logged in to Facebook, 
       // but has not authenticated your app
   } 
   else {
       // the user isn't logged in to Facebook.
   }
  });

2.或者,通过在初始化框架时订阅auth.authResponseChange事件并将status选项设置为true

Facebook Developers Site上有一个完整的 Javascript SDK 教程,解释了这两种方法。

希望有意义

于 2014-02-14T01:47:59.700 回答