Javascript Phonegap/Cordova将照片上载到graph.facebook-需要上载文件
我使用的是facebook graph api的v2.0版本,我正在尝试将图片上传到v2.0/me/photos,但不幸的是,我遇到了这个错误Javascript Phonegap/Cordova将照片上载到graph.facebook-需要上载文件,javascript,android,facebook,cordova,facebook-graph-api-v2.0,Javascript,Android,Facebook,Cordova,Facebook Graph Api V2.0,我使用的是facebook graph api的v2.0版本,我正在尝试将图片上传到v2.0/me/photos,但不幸的是,我遇到了这个错误(#324)需要上传文件,这很奇怪,因为我有发布操作权限,文档中说这就是我所需要的 我使用的是phonegap,因此普通的JSSDK对我不起作用,而cordova facebook插件使cordova的构建失败(遵循至少5个论坛/博客上的说明,没有任何效果),这就是为什么我对我的应用程序使用纯XMLHTTPRequests和AJAX请求。一切都很好(我可以
(#324)需要上传文件
,这很奇怪,因为我有发布操作权限,文档中说这就是我所需要的
我使用的是phonegap,因此普通的JSSDK对我不起作用,而cordova facebook插件使cordova的构建失败(遵循至少5个论坛/博客上的说明,没有任何效果),这就是为什么我对我的应用程序使用纯XMLHTTPRequests和AJAX请求。一切都很好(我可以在用户的墙上发布消息,登录也很好),除了这个图片上传。这是我正在使用的函数(数据是图像的URI):
p.S.2:我尝试将
&upload_file=true
添加到post请求的url,真的没有运气/ 这是我发现的解决方案,使用cordova文件传输插件,它的工作原理与数据URI类似:
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;
}
但首先,使用
cordova plugin add org.apache.cordova.file transfer
将该插件添加到cordova,这是我发现的解决方案,使用cordova file transfer插件,在数据URI方面效果非常好:
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;
}
但首先,使用cordova plugin add org.apache.cordova.file transfer将插件添加到cordova
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;
}