Facebook JS SDK:“(#100)无权发布视频”错误
Facebook JS SDK: "(#100) No permission to publish the video" error
我正在尝试将视频文件发布到我的 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);
});
现在我正在尝试 post:
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"
}
}
我不明白哪里错了:
- 我添加了 'publish_video' 权限
- I/m 正在尝试上传“.mov”文件
这是我的令牌拥有的权限:
{
"data": [
{
"permission": "publish_video",
"status": "granted"
},
{
"permission": "public_profile",
"status": "granted"
}
]
}
有什么问题吗?
将回答我自己的问题:
我在 Facebook 开发者组问了同样的问题 https://www.facebook.com/groups/fbdevelopers/permalink/1966752140034957/
一个人给了我一个解释:
- 无法通过 API post 到用户的时间线(可能发生在 2018 年 8 月 1 日之后)
- 如果 post 使用页面令牌
到页面,这仅通过 API 有效
- 从 Web 共享视频的唯一可能方法是使用共享对话框https://developers.facebook.com/docs/sharing/reference/share-dialog/
这不是我想做的,但至少现在清楚了
我正在尝试将视频文件发布到我的 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);
});
现在我正在尝试 post:
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"
}
}
我不明白哪里错了:
- 我添加了 'publish_video' 权限
- I/m 正在尝试上传“.mov”文件
这是我的令牌拥有的权限:
{
"data": [
{
"permission": "publish_video",
"status": "granted"
},
{
"permission": "public_profile",
"status": "granted"
}
]
}
有什么问题吗?
将回答我自己的问题:
我在 Facebook 开发者组问了同样的问题 https://www.facebook.com/groups/fbdevelopers/permalink/1966752140034957/
一个人给了我一个解释:
- 无法通过 API post 到用户的时间线(可能发生在 2018 年 8 月 1 日之后)
- 如果 post 使用页面令牌 到页面,这仅通过 API 有效
- 从 Web 共享视频的唯一可能方法是使用共享对话框https://developers.facebook.com/docs/sharing/reference/share-dialog/
这不是我想做的,但至少现在清楚了