2015-04-19 4 views
0

Я успешно опубликовал фид на странице facebook с графиком api.Сообщение от android to facebook page

 try { 
        resObj.put("message","feed from android"); 
//resObj.put("object_attachment",bitmap); 

       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

       GraphRequest request = GraphRequest.newPostRequest(
         AccessToken.getCurrentAccessToken(),"363453267193844/photos",resObj, 
         new GraphRequest.Callback() { 
          @Override 
          public void onCompleted(GraphResponse graphResponse) { 
           Log.i(TAG,"post page response::"+graphResponse); 

          } 
         } 
        ); 

       request.executeAsync(); 

Но, я не могу опубликовать изображение на странице Facebook. Проблема в том, что я не могу найти ключ для прикрепления изображения в данных Json, опубликованных в Graph Api.

Неудачный ответ от Facebook является

{Response: responseCode: 400, graphObject: null, error: {HttpStatus: 400, errorCode: 324, errorType: OAuthException, errorMessage: (#324) Requires upload file}} 

ответ

2

Наконец, в конце концов, я был в состоянии отправить изображение на facebook странице. Вот как я сделал, чтобы опубликовать фотографию.

Bundle bundle=new Bundle(); 
     bundle.putByteArray("object_attachment",byteArray);// object attachment must be either byteArray or bitmap image 
     bundle.putString("message","some message here"); 

     GraphRequest graphRequest=new GraphRequest(AccessToken.getCurrentAccessToken(), 
       "{page_id}/photos", 
       bundle, 
       HttpMethod.POST, 
       new GraphRequest.Callback() { 

        @Override 
        public void onCompleted(GraphResponse graphResponse) { 

         Log.i("post page response::" + graphResponse); 

       } 
     ); 
     graphRequest.executeAsync(); 
+0

это здорово, tnx man :). можете ли вы рассказать мне, как вы восстановили page_id существующего альбома? – DoubleK

0

1.) Убедитесь, что вам маркер доступа к странице с publish_pages разрешения, которые могут быть использованы для публикации новых фотографий.

2.) От docs. Обратите внимание, что у вас нет «/» перед страницей в вашем вызове.

Есть два отдельные способ публикации фотографий в Facebook:

1: Присоединить фотографию в качестве составных/фасонных данных. Имя объекта не имеет значения, но исторически люди использовали источник в качестве имени параметра для фотографии . Как это работает, зависит от SDK, который вы используете , чтобы сделать сообщение.

2: Используйте фото, которое уже в Интернете, опубликовав с помощью параметра URL:

Bundle params = new Bundle(); 
params.putString("url", "{image-url}"); 
/* make the API call */ 
new Request(
    session, 
    "/{page-id}/photos", 
    params, 
    HttpMethod.POST, 
    new Request.Callback() { 
     public void onCompleted(Response response) { 
      /* handle the result */ 
     } 
    } 
).executeAsync(); 

Там нет никакого способа, чтобы опубликовать более одной фотографии в том же графике API вызова.

3.) Пример ==>

Попробуй как этот пост byteArrayStream т.е. вашей фотографии

postParams = new Bundle(); 

      postParams.putString("message", "feed from android"); 
      postParams.putBoolean("published",true); 
      String pageID = "363453267193844"; 

      //Post to the page as the page user 
      ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
      <YOURBITMAPPHOTOHANDLE>.compress(Bitmap.CompressFormat.PNG, 100, stream); 
      byte[] byteArray = stream.toByteArray(); 
      postParams.putByteArray("source", byteArray); 

      postParams.putString("access_token", "your_page_access_token"); 

     /* make the API call */ 
      new Request(
        sessionInstance, 
        "/" + pageID + "/photos", 
        postParams, 
        HttpMethod.POST, 
        new Request.Callback() { 
         public void onCompleted(Response response) { 
          //An error occurred during posting to facebook 
          FacebookRequestError error = response.getError(); 
          if (error != null) { 
           isPostingError = true; 
           postingErrorMessage = error.getErrorUserMessage(); 

          } else { 
           isPostingError = false; 
          } 

         } 


        } 
      ). executeAsync(); 
+1

Facebook выпустил новый sdk v4, где классы запроса и ответа в v3 теперь называются GraphRequest и GraphResponse в версии 4. Класс запроса не работает. https://developers.facebook.com/docs/android/upgrading-4.x – user3308752

Смежные вопросы