Message from cordova-plugin-facebook4 with image error on Android

I am developing a hybrid app with angular and ionic for iOS and Android, and I encountered an error while posting with the image on facebook. The error appears only when the application is launched on the Android device. I am using cordova-plugin-facebook4 and requests like getting friends and login are working correctly.

Code for this part:

function makeCallToFacebookWithImage(url){
    console.log("share that to facebook with image");
    var facebookString = "/me/photos?method=post&url="+encodeURI(url)+"&caption="+$scope.comment;
    console.log("facebookString with image: "+facebookString);
    facebookConnectPlugin.getLoginStatus(function(loginStatus){
        // if already loggedIn
        if(loginStatus.status == "connected"){
            facebookConnectPlugin.api(facebookString, ["publish_actions"], function(response){
                // success
                console.log("success "+JSON.stringify(response));
            }, function(response){
                // error
                console.log("error "+JSON.stringify(response));
            });
        }
    }, function(error){
        console.log(error);
    })
}

Console .log line 4:

facebookString with image: / me / photos? method = post & url = https://firebasestorage.googleapis.com/URL?alt=media&token=4420080a-41d8-4816-bf62-5bfb159d1da5&caption=FBTest

Error message:

error { "errorCode": "100", "errorType": "OAuthException", "errorMessage": "Invalid parameter", "errorUserMessage": " . 4 JPG, PNG, GIF TIFF.", "errorUserTitle": " " }

, firebase ( URL URL-, ), , Facebook, .jpg , Facebook . , iOS.

, - . - ?

EDIT:

.log URL-:

IOS:

/me/photos?method=post&url=https://firebasestorage.googleapis.com/v0/b/appname-50cd0.appspot.com/o/post%252F-KbyHksSP_EV2MTjvCb5.jpg?alt=media&token=64f43c60-47fa-40b2-b85b-e1e5ae1dea13&caption=Rest

Android:

/me/photos?method=post&url=https://firebasestorage.googleapis.com/v0/b/appname-50cd0.appspot.com/o/post%252F-KbxypBFRqs6eyYNk8ZR.jpg?alt=media&token=4420080a-41d8-4816-bf62-5bfb159d1da5&caption=FB

, , URL .

EDIT2:

, :

  • URL- firebase, iOS → .
  • - Android facebook →
  • whitelisted graph.facebook.com config.xml :

    <access origin="*graph.facebook.com*" subdomains="true"/>
    

- >

  • encodeURIComponent (url) encodeURI (url) →

Nexus 5 Android 6.0.1 , Android, , .

3:

  • , Android,

  • facebook4 , facebook sdk 4.22.1,

  • cordova-plugin-facebook4/www/facebook-browser.js FB.init( 147) 2.7 2.9 ( ),

EDIT 4 SOLVED

, . cordova-plugin-facebook4 Android, URL- , , ? =, firebase.

+4
1

. cordova-plugin-facebook4 firebase Android, .

cordova-plugin-facebook4/src/android/ConnectPlugin.java :

private void makeGraphCall() {...}

"facebookString", ? =. firebase , firebase facebook url firebase.

, :

for (String query : queries) {
  int splitPoint = query.indexOf("=");
  if (splitPoint > 0) {
    String key = query.substring(0, splitPoint);
    String value = query.substring(splitPoint + 1, query.length());
    params.putString(key, value);
  }
}

for (String query : queries) {
  int splitPoint = query.indexOf("=");
  if (splitPoint > 0) {
    String key = query.substring(0, splitPoint);
    String value = query.substring(splitPoint + 1, query.length());
    if(key.equals("url") || key.equals("caption")){
      value = URLDecoder.decode(value);
    }
    params.putString(key, value);
  }
}

angular URL- firebase, , URL- , facebookstring.

angular :

function makeCallToFacebookWithImage(url) {
  console.log("share to facebook with image");
  var newURL = url;
  var caption = $scope.comment;
  if (ionic.Platform.isAndroid()) { //prep only neccessary on android
    console.log("Is Android device");
    var index = url.indexOf("%2F"); //firebase link specific encoding for folders
    var leftSide = url.substring(0, index);
    var rightSide = url.substring(index, url.length);
    newURL = leftSide + encodeURIComponent(rightSide);
    caption = encodeURIComponent(caption);
  }
  newURL = encodeURIComponent(newURL);
  var facebookString = "/me/photos?method=post&url=" + newURL + "&caption=" + encodeURIComponent(caption);
...

facebook4 . , , .

+1

Source: https://habr.com/ru/post/1668601/


All Articles