通过Javascript/Phonegap将base64图像上载到Facebook graph API
我正试图向“+userID+”/photos?access_token=“+accessToken”)发出“post”请求 “url”参数为base64数据URI 我得到了错误“数据:base64…”。。。。是内部URL,但这是外部请求。“通过Javascript/Phonegap将base64图像上载到Facebook graph API,javascript,facebook,cordova,sdk,base64,Javascript,Facebook,Cordova,Sdk,Base64,我正试图向“+userID+”/photos?access_token=“+accessToken”)发出“post”请求 “url”参数为base64数据URI 我得到了错误“数据:base64…”。。。。是内部URL,但这是外部请求。“ init({appId:“FB的ur ap id”,状态:true,cookie:true}); FB.登录(功能(响应){ if(response.authResponse){ var access_token=FB.getAuthResponse()['
init({appId:“FB的ur ap id”,状态:true,cookie:true});
FB.登录(功能(响应){
if(response.authResponse){
var access_token=FB.getAuthResponse()['accessToken'];
FB.api(“我/照片”、“帖子”{
消息:“由xxxx发布”,
状态:“成功”,
访问令牌:访问令牌,
url:'test.png'
},功能(回应){
如果(!response | | response.error){
警报(“发生错误”);
}否则{
警报(“在Facebook上发布的图像”);
}
});
}否则{
}
},{范围:'用户照片,照片上传,发布流,离线访问'});
},
错误:函数(){
}
我知道无法上传一张照片的痛苦。经过不眠之夜和数天的研究,我终于让它与cordova文件传输插件一起工作
此解决方案不需要Uint8Array或blob支持;)
首先添加插件:cordova plugin add org.apache.cordova.file transfer
然后,使用以下代码(请注意,我使用的是angular.js。请不要使用承诺,或者使用诸如rsvp或Q之类的库来做出承诺):
我也一直在搜索这张照片。我能找到的最接近的方法是将图像临时保存在服务器上,将图像发送到相册中,然后删除照片,因为一旦图像出现在Facebook上,就不再需要源图像。不过,期待其他人能找到什么。这张照片对我很有用:
<script src='http://connect.facebook.net/en_US/all.js'></script>
FB.init({appId: "ur ap id of fb", status: true, cookie: true});
FB.login(function(response) {
if (response.authResponse) {
var access_token = FB.getAuthResponse()['accessToken'];
FB.api('me/photos', 'post', {
message: 'posted by xxxx',
status: 'success',
access_token: access_token,
url: 'test.png'
}, function (response) {
if (!response || response.error) {
alert('Error occured');
} else {
alert('Image Posted On Facebook');
}
});
} else {
}
}, {scope: 'user_photos,photo_upload,publish_stream,offline_access'});
},
error:function(){
}
function postImage(fileURI, message) {
var deferred = $q.defer();
var win = function (r) {
deferred.resolve(r);
}
var fail = function (error) {
deferred.reject(error);
}
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = 'name_of_photo_' + Math.round((+(new Date()) + Math.random()));
options.mimeType = "image/jpg";
var params = new Object();
params.access_token = "your facebook access token ;)";
params.message = message;
params.no_story = false;
options.params = params;
var ft = new FileTransfer();
ft.upload(fileURI, "https://graph.facebook.com/v2.0/me/photos", win, fail, options);
return deferred.promise;
}