尝试将一些数据发布到我的墙上,但出现错误
我主要引用这篇文章:Upload Base64 Image Facebook Graph API
但我陷入困境并不断收到来自 FB 的 400 错误响应。
就此而言,我检查了我的调用,发现我的数据对象为空(我假设这就是导致 400 错误的原因)。
这是我所拥有的:
function publishStream(img)
{
var accessToken = "";
FB.getLoginStatus(function(response)
{
if (response.status === 'connected')
{
var uid = response.authResponse.userID;
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.
}
});
var imageData = img;
try{
blob = dataURItoBlob(imageData);
}
catch(e){
console.log(e);
}
var fd = new FormData();
fd.append("access_token",accessToken);
fd.append("source", blob);
fd.append("message","");
try{
$.ajax({
url:"https://graph.facebook.com/me/photos?access_token=" + accessToken,
type:"POST",
data:fd,
processData:false,
contentType:false,
cache:false,
success:function(data){
console.log("success " + data);
},
error:function(shr,status,data){
console.log("error " + data + " Status " + shr.status);
},
complete:function(){
console.log("Posted to facebook");
}
});
}
catch(e){
console.log(e);
}
}
function dataURItoBlob(dataURI) {
var byteString = window.atob(dataURI);
var ia = new Uint8Array(byteString.length);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
var blob = new Blob([ia], { type: 'image/png' });
return blob;
}
其中参数img是base64编码的图像。
这是我从错误请求中得到的数据:
{ "data": [ ] }
谁能引导我到达终点线???如有任何帮助,我们将不胜感激!
最佳答案
您阅读过 FB 上 https://developers.facebook.com/docs/graph-api/reference/user/photos/#publish 下的文档吗?
显然,sourceblob 需要用转义大括号封装:
source=%7Bimage-data%7D
如果你尝试会发生什么
fd.append("source", '%7B' + blob + '%7D');
另外,关于 Upload Base64 Image Facebook Graph API 答案的评论之一它被声明为“当您发送它进行 blob 转换时删除“data:image/png;base64,”部分”。你尝试过这个吗?
关于javascript - Graph API 将 base64 IMAGE 发布到 Facebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21611932/