2011-03-02 4 views
4

Quelqu'un at-il un exemple d'utilisation de l'API Android Graph?Android Facebook Graph API

Je suis coincé avec les bases, comme l'affichage de texte sur le mur sur Facebook. J'utilise le SDK Facebook pour Android. Voici ce que j'ai jusqu'à présent:

Bundle params = new Bundle(); 
    params.putString("message", "picture caption"); 

    AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook); 
    mAsyncRunner.request("me/feed", params, "POST", new RequestListener() { 

     @Override 
     public void onMalformedURLException(MalformedURLException e, Object state) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onIOException(IOException e, Object state) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onFileNotFoundException(FileNotFoundException e, Object state) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onFacebookError(FacebookError e, Object state) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onComplete(String response, Object state) { 
      // TODO Auto-generated method stub 

     } 
    }, "foo"); 

Rien ne se passe, et mon Logcat dit:

03-02 22:10:02.973: WARN/Bundle(1930): Key message expected byte[] but value was a java.lang.String. The default value <null> was returned. 
    03-02 22:10:02.983: WARN/Bundle(1930): Attempt to cast generated internal exception: 
    03-02 22:10:02.983: WARN/Bundle(1930): java.lang.ClassCastException: java.lang.String 
    03-02 22:10:02.983: WARN/Bundle(1930):  at android.os.Bundle.getByteArray(Bundle.java:1305) 
    03-02 22:10:02.983: WARN/Bundle(1930):  at com.facebook.android.Util.encodePostBody(Util.java:63) 
    03-02 22:10:02.983: WARN/Bundle(1930):  at com.facebook.android.Util.openUrl(Util.java:182) 
    03-02 22:10:02.983: WARN/Bundle(1930):  at com.facebook.android.Facebook.request(Facebook.java:559) 
    03-02 22:10:02.983: WARN/Bundle(1930):  at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:253) 
+0

De votre message d'erreur, il semble comme si vous mettez une chaîne dans la clé de votre ensemble de paramètres quand, pour une raison quelconque, il attend un tableau d'octets. Je ne pourrais pas vous en dire plus car je n'ai pas implémenté leur API. –

+0

Oui. J'ai également essayé avec un tableau d'octets, mais il se plaint encore. Je souhaite qu'il y avait plus d'informations sur la façon de mettre en œuvre cette API. Le seul que j'ai rencontré a été en PHP. – whirlwin

Répondre

2

essayer

Bundle params = new Bundle(); 
params.putString(Facebook.TOKEN, token); 
params.putString("message", "graph api");  
mAsyncRunner.request("/me/feed", params,"POST", new SampleUploadListener(),null); 

vous pouvez obtenir un jeton d'accès en utilisant

 token = mFacebook.getAccessToken(); 
2

Vous pouvez le faire comme: - Description de donner dans le message ensemble et si tu veux partager l'image du serveur u peut fournir des liens comme je l'ai donné ci-dessous

Bundle params = new Bundle(); 
     params.putString("message", "description"); 
     params.putString("link","your image url"); 

new GraphRequest(AccessToken.getCurrentAccessToken(), 
      "me/feed", 
      params, 
      HttpMethod.POST, 
      new GraphRequest.Callback() { 
       @Override 
       public void onCompleted(GraphResponse response) { 
        Log.d(TAG, "" + response.toString()); 
        try { 
         JSONObject jsonObject = new JSONObject(response.getRawResponse()); 
         if (jsonObject != null) { 
          String postId = jsonObject.getString("id"); 
          if (postId != null && !postId.equalsIgnoreCase("")) { 
           hideProgressDialog(); 
           Log.d("postId", "" + postId); 
          } else { 
           hideProgressDialog(); 
           Utils.showToast(getActivity(), getResources().getString(R.string.txt_try_again)); 
          } 
         } else { 
          hideProgressDialog(); 
          Utils.showToast(getActivity(), getResources().getString(R.string.txt_try_again)); 
         } 

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

       } 
      }).executeAsync(); 
+0

fonctionne très bien. – aj0822ArpitJoshi