Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook 启动自定义故事的登录_Facebook_Facebook Graph Api_Facebook Login_Facebook Stream Story_Custom Stories - Fatal编程技术网

Facebook 启动自定义故事的登录

Facebook 启动自定义故事的登录,facebook,facebook-graph-api,facebook-login,facebook-stream-story,custom-stories,Facebook,Facebook Graph Api,Facebook Login,Facebook Stream Story,Custom Stories,我已经创建了一个自定义的故事,当用户点击共享按钮时,它会发布在facebook时间线上 当我登录facebook时,我可以使用以下代码成功地在timeline上发布 function postLike() { FB.api( 'https://graph.facebook.com/me/og_pricepan:compared', 'post', { product: objectToLike, privacy: { 'value': 'SELF'}

我已经创建了一个自定义的故事,当用户点击共享按钮时,它会发布在facebook时间线上

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

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>';
       }
   }
);
函数postLike(){
FB.api(
'https://graph.facebook.com/me/og_pricepan:compared',
"岗位",,
{product:objectToLike,
隐私:{'value':'SELF'}
},
功能(响应){
如果(!响应){
警报('发生错误');
}else if(response.error){
document.getElementById('result').innerHTML=
'错误:'+response.Error.message;
}否则{
document.getElementById('result').innerHTML=
'';
}
}
);
现在,当用户未登录facebook时,我得到以下错误:

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

  • 登录窗口是否应该自动打开,要求用户登录facebook,或者我需要做点什么来处理这种情况

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

  • 登录窗口是否应该自动打开,要求用户登录facebook,或者我需要做点什么来处理这种情况

    不可以。您需要按照请求访问令牌来显式登录用户

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

    是和否。不,因为你不会让Facebook支持团队的人检查你的应用程序,以确保你的应用程序符合所有条件。是的,因为你需要在Facebook上注册你的应用程序。所以,从技术上讲,你需要做的就是以开发者身份在Facebook上注册你的应用程序,并注册你的应用程序以获得应用程序机密d API密钥。你可以让你的应用程序处于“沙盒模式”,创建测试用户,并在发布Facebook之前测试您与Facebook的集成。发布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
    事件,并将
    状态设置为
    true

    有一个完整的教程来解释这两种方法


    希望它有意义

    谢谢你,伙计,帮了我很多忙。现在我已经把函数包装成了
    FB.Login
    来实现需要的功能。:-)