2017-03-08 10 views
0

Facebook Wallの画像を含むメッセージを、自分が所有する1つのページに投稿したいと考えています。私は次のコードを使用していますそれを行うには :Android - Facebookの壁紙に画像を投稿する際にエラーが発生しました。+ +

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

「画像」は公開可能な画像のURLでなければなりません。フィードに投稿するときにバイナリイメージデータをアップロードすることはできません。 – 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(); 
関連する問題