Cordova 如何通过phonegap在Facebook活动上上传照片?
我正在研究Phonegap 现在我用的是:-Cordova 如何通过phonegap在Facebook活动上上传照片?,cordova,Cordova,我正在研究Phonegap 现在我用的是:- $.post("https://graph.facebook.com/"+Event_Id, { "Photos":uri, "access_token": fbAccessToken }, function(data){ Some code here }, "json"); 也许可以试试这个方法,它对我很有用:(imageData必须是图像的二进制表示) 函数PostImageToFacebook(authTok
$.post("https://graph.facebook.com/"+Event_Id, {
"Photos":uri,
"access_token": fbAccessToken
},
function(data){
Some code here
}, "json");
也许可以试试这个方法,它对我很有用:(imageData必须是图像的二进制表示)
函数PostImageToFacebook(authToken、文件名、mimeType、imageData)
{
如果(imageData!=null)
{
//提示用户输入消息
//如果用户单击“确定”按钮,窗口方法提示符()将从文本框返回输入的值。
//如果用户单击“取消”按钮,窗口方法提示符()将返回null。
var message=prompt('Facebook','输入消息');
如果(消息!=null)
{
//这是我们将使用的多部分/表单数据边界
变量边界='——这是边界1234567890';
//让我们对包含在var中的图像文件进行编码
var formData='-'+boundary+'\r\n'
formData+='内容处置:表单数据;name=“source”;filename=“”+filename+”\r\n';
formData+='内容类型:'+mimeType+'\r\n\r\n';
对于(var i=0;i
希望这有帮助!再见 我希望这会有用。通过使用javascript将照片上传到FB,您可以使用以下方法。这里需要的是imageData(图像的base64格式)和mime类型
try{
blob = dataURItoBlob(imageData,mimeType);
}catch(e){console.log(e);}
var fd = new FormData();
fd.append("access_token",accessToken);
fd.append("source", blob);fd.append("message","Kiss");
try{
$.ajax({
url:"https://graph.facebook.com/" + <<userID received on getting user details>> + "/photos?access_token=" + <<user 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("Ajax Complete");
}
});
}catch(e){console.log(e);}
function dataURItoBlob(dataURI,mime) {
// convert base64 to raw binary data held in a string
// doesn't handle URLEncoded DataURIs
var byteString = window.atob(dataURI);
// separate out the mime component
// write the bytes of the string to an ArrayBuffer
//var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(byteString.length);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
// write the ArrayBuffer to a blob, and you're done
var blob = new Blob([ia], { type: mime });
return blob;
}
试试看{
blob=dataURItoBlob(imageData,mimeType);
}catch(e){console.log(e);}
var fd=新FormData();
fd.append(“访问令牌”,accessToken);
fd.append(“源”,blob);fd.追加(“消息”、“吻”);
试一试{
$.ajax({
url:“https://graph.facebook.com/“++”/photos?访问_token=“+”,
类型:“职位”
数据:fd,
processData:false,
contentType:false,
cache:false,
成功:功能(数据){
console.log(“成功”+数据);
},
错误:功能(shr、状态、数据){
控制台日志(“错误”+数据+“状态”+shr.Status);
},
完成:函数(){
log(“Ajax完成”);
}
});
}catch(e){console.log(e);}
函数dataURItoBlob(dataURI,mime){
//将base64转换为字符串中的原始二进制数据
//不处理URL编码的数据URI
var byteString=window.atob(dataURI);
//分离出mime组件
//将字符串的字节写入ArrayBuffer
//var ab=新阵列缓冲区(byteString.length);
var ia=新的Uint8Array(byteString.length);
for(var i=0;i
我知道无法上传一张照片的痛苦。经过日夜不眠的研究,我终于让它与cordova文件传输插件一起工作
首先添加插件:cordova plugin add org.apache.cordova.file transfer
然后,使用以下代码(请注意,我使用的是angular.js。不要使用用户承诺,或者使用诸如rsvp或Q之类的库来做出承诺):
请给我这个问题的答案,如果我使用表单多部分/表单数据,而不是android设备的媒体浏览方法,则此代码适用于web图像url而不是我的设备图像。Android浏览器不支持输入类型=“文件”。我该怎么办?你找到解决办法了吗?它不起作用。。它正在抛出“发生未知错误”。我尝试了这个。它确实有效,但要想从win那里得到回应需要花费很长时间。比如在PC仿真器上60多秒。
try{
blob = dataURItoBlob(imageData,mimeType);
}catch(e){console.log(e);}
var fd = new FormData();
fd.append("access_token",accessToken);
fd.append("source", blob);fd.append("message","Kiss");
try{
$.ajax({
url:"https://graph.facebook.com/" + <<userID received on getting user details>> + "/photos?access_token=" + <<user 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("Ajax Complete");
}
});
}catch(e){console.log(e);}
function dataURItoBlob(dataURI,mime) {
// convert base64 to raw binary data held in a string
// doesn't handle URLEncoded DataURIs
var byteString = window.atob(dataURI);
// separate out the mime component
// write the bytes of the string to an ArrayBuffer
//var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(byteString.length);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
// write the ArrayBuffer to a blob, and you're done
var blob = new Blob([ia], { type: mime });
return blob;
}
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;
}