首页 > 解决方案 > Facebook JS SDK:“(#100) 没有发布视频的权限”错误

问题描述

我正在尝试将视频文件发布到我的 Facebook 订阅源

我的应用程序处于开发模式

这是我初始化 SDK 的方式:

$(document).ready(function() {
    initFacebook();
});

function initFacebook(){
  window.fbAsyncInit = function() {
    FB.init({
     appId      : '2xxxxxxxx7',
     cookie     : true,
     xfbml      : true,
     version    : 'v3.1'
    });

    FB.AppEvents.logPageView();
  };

  (function(d, s, id){
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = "https://connect.facebook.net/en_US/sdk.js";
     fjs.parentNode.insertBefore(js, fjs);
  }(document, 'script', 'facebook-jssdk'));
}

这是我的登录方式:

var FB_ACCESS_TOKEN = null;
var FB_USER_ID = null;

FB.login(function(response) {
   if (response.status === 'connected') {
     FB_ACCESS_TOKEN = response.authResponse.accessToken;
     FB_USER_ID = response.authResponse.userID;
   } 
}, {scope: 'publish_video'});

然后我有一个文件输入及其事件回调:

<input id="video-picker" type="file"/>

$("#video-picker").change(function (event) {
   var file = this.files[0];
   post(file);
});

现在我正在尝试发布:

function post(file){
  var formData = new FormData();
  formData.append('title', "My awesome video title");
  formData.append('description', 'My awesome video');
  formData.append('source', file);
  var url = 'https://graph-video.facebook.com/v3.1/' + FB_USER_ID + '/videos?access_token='+FB_ACCESS_TOKEN;
  $.ajax({
    type: "POST",
    url: url,
    data: formData,
    contentType: false,
    processData: false,
    success: function(data){
      console.log("SUCCESS", data);
    },
    error: function(data) {
      console.log("ERROR", data);
    }
  });
}

但我收到以下错误:

{
   "error": {
      "message": "(#100) No permission to publish the video",
      "type": "OAuthException",
      "code": 100,
      "fbtrace_id": "D16rmDQzzT6"
   }
}

我不明白出了什么问题:

这是我的令牌拥有的权限:

{
  "data": [
  {
    "permission": "publish_video",
    "status": "granted"
  },
  {
    "permission": "public_profile",
    "status": "granted"
  }
  ]
}

有什么想法有什么问题吗?

标签: javascriptfacebookfacebook-graph-apifacebook-javascript-sdkfacebook-login

解决方案


将回答我自己的问题:

我在 Facebook 开发者小组https://www.facebook.com/groups/fbdevelopers/permalink/1966752140034957/上问了同样的问题

一个人给了我一个解释:

  1. 无法通过 API 发布到用户的时间线(可能发生在 2018 年 8 月 1 日之后)
  2. 如果使用页面令牌发布到页面,这仅通过 API 有效
  3. 从 Web 共享视频的唯一可能方法是使用共享对话框https://developers.facebook.com/docs/sharing/reference/share-dialog/

这不是我想做的,但至少现在很清楚


推荐阅读