2017-03-08 95 views
0

我想发布一条消息与Facebook墙上的图像到我自己的一页。 要做到这一点,我用下面的代码:Android - 错误发布在Facebook上的Facebook墙上的图片与Facebook SDK 4. +

private void postOnWall() { 

    String PageAccessToken = "EAADpx4TvZCHcBAOw9fA2NaYLkwQUTx1ZCaRaxHN96HcXZCItbCCLiEVm8NmnMDZCJHDeZBR02WfEsVCciY27mtV2aXpZBWEsZC8wzyHZCSKcdQirIXyPuiLCIdCE2Y7oEcd9muMbbUvwWBH9iAzylJDG8VAljZARUG5zKZBeQpphuZCKcZCBecxf96WjwPPyZA5NeqzEZD"; 
    AccessToken accessToken = new AccessToken(PageAccessToken, AccessToken.getCurrentAccessToken().getApplicationId(), AccessToken.getCurrentAccessToken().getUserId(), AccessToken.getCurrentAccessToken().getPermissions(), null, AccessTokenSource.FACEBOOK_APPLICATION_NATIVE, AccessToken.getCurrentAccessToken().getExpires(), null); 

    GraphRequest request = GraphRequest.newPostRequest(accessToken, "me/feed", null, 
      new GraphRequest.Callback() { 
       @Override 
       public void onCompleted(GraphResponse response) { 
        Log.i("facebook","response "+ response); 
        FacebookRequestError error = response.getError(); 
        if (error != null) { 
         Log.e("facebook","Error "+ error); 

        } 
       } 
      }); 

    byte[] data = null; 
    Bitmap bi = mImageBitmap; 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    bi.compress(Bitmap.CompressFormat.PNG, 100, baos); 
    data = baos.toByteArray(); 

     String mMessage = "Message"; 

     Bundle postParams = request.getParameters(); 
     postParams.putByteArray("picture", data); 
     postParams.putString("message", mMessage); 
     postParams.putString("link", "https://play.google.com/store/apps/details?id=br.com.cfb.doar"); 
     request.setParameters(postParams); 
     request.executeAsync(); 

} 

我碰到GraphRequest以下回应:

{Response: responseCode: 400, graphObject: null, error: {HttpStatus: 400, errorCode: 100, errorType: OAuthException, errorMessage: Invalid parameter}} 

我做错了吗?

预先感谢您。

+0

'picture'必须是可公开访问的图片的URL;发布到Feed时无法上传二进制图片数据。 – CBroe

+0

嗨CBroe,感谢您的旅游解释。我想上传用户刚刚拍摄的照片。那可能吗?怎么样?谢谢。 – Carlos

+0

然后你必须做一个实际的照片上传(https://developers.facebook.com/docs/graph-api/reference/user/photos#Creating) - 但你不能同时发布一个链接。 – CBroe

回答

1

我找到了解决方案。我改变了方法GraphRequest.newUploadPhotoRequest 波纹你可以找到代码。我希望它能帮助别人。

private void postOnWall() { 

    String PageAccessToken = "EAADpx4TvZCHcBAG5KFqOZCojAYwBUma8vSAZBKGqPbZC8HlGr1z1Tgxsay45Gs1CVMVAn7NhrZC0T5i6rWS7ZCpICoVasUKCgCFhZCwgoDxng9szAZA7KbZAWdCVuUySEuGzTIRCTC80gzysj3gK2LNqf4ZCzZBUTWMegMYRmoZCS94ecmtVRZCEYyTU73hLdZCvDY8CEZD"; 
    AccessToken accessToken = new AccessToken(PageAccessToken, AccessToken.getCurrentAccessToken().getApplicationId(), AccessToken.getCurrentAccessToken().getUserId(), AccessToken.getCurrentAccessToken().getPermissions(), null, AccessTokenSource.FACEBOOK_APPLICATION_NATIVE, AccessToken.getCurrentAccessToken().getExpires(), null); 

    GraphRequest request = GraphRequest.newUploadPhotoRequest(accessToken, "me/photos", mImageBitmap, null, null, 
      new GraphRequest.Callback() { 
       @Override 
       public void onCompleted(GraphResponse response) { 
        Log.i("facebook", "response " + response); 
        FacebookRequestError error = response.getError(); 
        if (error != null) { 
         Log.e("facebook", "Error " + error); 
        } else { 
         Toast.makeText(mContext, 
           "Photo uploaded successfully", 
           Toast.LENGTH_LONG).show(); 
        } 
       } 

      }); 

     String mMessage = "Message Text"; 

     Bundle postParams = request.getParameters(); 
     postParams.putString("message", mMessage); 
     request.setParameters(postParams); 

     request.executeAsync(); 
相关问题