2017-02-26 17 views
0

FacebookのグラフAPIからユーザーのフィードを取得するためにJavaを使用しています。 /me/feedは正常に機能しますが、投稿があれば写真を取得したいと考えています。facebook api画像でフィードを取得

/ME /養うフィールド=写真、メッセージ、話

しかし、私はから私のコードを変更:?

final GraphRequest graphRequest = new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/feed", null, HttpMethod.GET, gCallback); 

グラフAPIエクスプローラで は、以下のURLは、画像を取得するために動作します

final GraphRequest graphRequest = new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/feed?fields=message,story", null, HttpMethod.GET, gCallback); 

にはRuntimeExceptionをしてクラッシュを開始:

02-26 16:30:34.751: D/AndroidRuntime(28980): Shutting down VM 
02-26 16:30:34.751: E/AndroidRuntime(28980): FATAL EXCEPTION: main 
02-26 16:30:34.751: E/AndroidRuntime(28980): Process: com.aktuna.gear.facebook, PID: 28980 
02-26 16:30:34.751: E/AndroidRuntime(28980): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=64206, result=-1, data=Intent { (has extras) }} to activity {com.aktuna.gear.facebook/com.aktuna.gear.facebook.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONArray.length()' on a null object reference 
02-26 16:30:34.751: E/AndroidRuntime(28980): at android.app.ActivityThread.deliverResults(ActivityThread.java:4925) 
02-26 16:30:34.751: E/AndroidRuntime(28980): at android.app.ActivityThread.handleSendResult(ActivityThread.java:4968) 
02-26 16:30:34.751: E/AndroidRuntime(28980): at android.app.ActivityThread.access$1600(ActivityThread.java:222) 
02-26 16:30:34.751: E/AndroidRuntime(28980): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1849) 
02-26 16:30:34.751: E/AndroidRuntime(28980): at android.os.Handler.dispatchMessage(Handler.java:102) 
02-26 16:30:34.751: E/AndroidRuntime(28980): at android.os.Looper.loop(Looper.java:158) 
02-26 16:30:34.751: E/AndroidRuntime(28980): at android.app.ActivityThread.main(ActivityThread.java:7229) 
02-26 16:30:34.751: E/AndroidRuntime(28980): at java.lang.reflect.Method.invoke(Native Method) 
02-26 16:30:34.751: E/AndroidRuntime(28980): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
02-26 16:30:34.751: E/AndroidRuntime(28980): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
02-26 16:30:34.751: E/AndroidRuntime(28980): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONArray.length()' on a null object reference 
02-26 16:30:34.751: E/AndroidRuntime(28980): at com.aktuna.gear.facebook.MainActivity$1.onSuccess(MainActivity.java:71) 
02-26 16:30:34.751: E/AndroidRuntime(28980): at com.aktuna.gear.facebook.MainActivity$1.onSuccess(MainActivity.java:1) 
02-26 16:30:34.751: E/AndroidRuntime(28980): at com.facebook.login.LoginManager.finishLogin(LoginManager.java:508) 
02-26 16:30:34.751: E/AndroidRuntime(28980): at com.facebook.login.LoginManager.onActivityResult(LoginManager.java:192) 
02-26 16:30:34.751: E/AndroidRuntime(28980): at com.facebook.login.LoginManager$1.onActivityResult(LoginManager.java:140) 
02-26 16:30:34.751: E/AndroidRuntime(28980): at com.facebook.internal.CallbackManagerImpl.onActivityResult(CallbackManagerImpl.java:82) 
02-26 16:30:34.751: E/AndroidRuntime(28980): at com.aktuna.gear.facebook.MainActivity.onActivityResult(MainActivity.java:107) 
02-26 16:30:34.751: E/AndroidRuntime(28980): at android.app.Activity.dispatchActivityResult(Activity.java:7137) 
02-26 16:30:34.751: E/AndroidRuntime(28980): at android.app.ActivityThread.deliverResults(ActivityThread.java:4921) 
02-26 16:30:34.751: E/AndroidRuntime(28980): ... 9 more 

何が間違っていますか? リクエストにフィールドを追加すると、グラフ要求がnullを返すのはなぜですか?

おかげ@CBroeへ

+0

多分あなたのSDKは、別の方法で指定されたフィールドを必要とします。あなたは文書をチェックしましたか? – CBroe

+0

ドキュメントは/ me/feedから画像を取得する手掛かりを与えません。または私は理解していない?ここには何も言葉がありません:https://developers.facebook.com/docs/graph-api/reference/v2.8/user/feed –

+0

あなたはAPIとSDKを混同しています。 – CBroe

答えて

0

おかげで私は、SDKの参照の例で答えを見つけることができました。

ここでは、将来の行事のためにある:

GraphRequest request = GraphRequest.newMeRequest(
     accessToken, 
     new GraphRequest.GraphJSONObjectCallback() { 
      @Override 
      public void onCompleted(
        JSONObject object, 
        GraphResponse response) { 
       // Application code 
      } 
     }); 
Bundle parameters = new Bundle(); 
parameters.putString("fields", "id,name,link"); 
request.setParameters(parameters); 
request.executeAsync(); 
関連する問題