【问题标题】:upload photo on facebook using javascript使用 javascript 在 facebook 上上传照片
【发布时间】:2011-03-28 03:51:17
【问题描述】:

我正在尝试使用 javascript 在 facebook 上上传照片。我能够使用 javascript 进行状态更新,但仍然在为如何上传照片而苦苦挣扎。谁能告诉我如何用 Javascript 编写代码?

【问题讨论】:

    标签: javascript facebook upload photo


    【解决方案1】:

    正确的代码是:

    var params = {};
    params.url = 'https://myserver.com/myimage.jpg';
    
    FB.api('/me/photos', 'post', params, function(response) {
        if (!response || response.error) {
            //error
        } else {
            picid = response.id;
        }
    }); 
    

    请记住,照片必须在您的服务器上,因此您需要一个用于上传的服务器脚本。 “url”参数是你上传的图片文件的绝对url。 更多信息:https://developers.facebook.com/docs/reference/api/user/(见照片/创建)

    请记住,根据 Facebook 条款,“消息”参数必须 100% 由用户生成。您也不能在已登录用户的朋友墙上发帖,该功能已被弃用并且不再起作用。

    【讨论】:

    【解决方案2】:

    我希望这会很有用。通过仅在 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;
    }
    

    【讨论】:

      【解决方案3】:

      这是一个示例代码:

      var imgURL = 'URL de la photo a uploader';
      
      FB.api('/ALBUM_ID/photos', 'post', {
          message: ' Ma photo',
          url: imgURL,
      }, function (response) { 
      
      });
      

      【讨论】:

        猜你喜欢
        • 2011-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-27
        • 1970-01-01
        相关资源
        最近更新 更多