6

私はすべての友達の生年月日を必要とするアプリケーションに取り組んでいます。グラフ API を使用してすべての友人の生年月日を取得する方法のコードを誰かが共有できますか。私は次のコードを使用しています:

// start Facebook Login
    Session.openActiveSession(this, true, new Session.StatusCallback() {

      // callback when session changes state
      @Override
      public void call(Session session, SessionState state, Exception exception) {
        if (session.isOpened()) {

          // make request to the 
            Request.executeMyFriendsRequestAsync(session, new Request.GraphUserListCallback() {

                @Override
                public void onCompleted(List<GraphUser> users, Response response) {
                    //Log.d("AL",""+users.size() + response.toString());
                    for (int i=0;i<users.size();i++){
                        Log.d("AL",""+users.get(i).toString());
                        welcome.setText("Done");
                    }

                }
            });
        }
      }
    });

そして、これは友達の名前とIDのみを返すだけです。友達の誕生日を取得する権限をどこに設定する必要がありますか? 私はFacebook SDKが初めてです。そしてSDK v3を使用しています。

グラフAPIは次のjson結果を返しています

{Response:  responseCode: 200, graphObject: GraphObject{graphObjectClass=GraphObject, state={"data":[{"id":"1580811776","name":"Jamal Abdul Nasir"},{"id":"1610349118","name":"Ahmed Nawaz"}],"paging":{"next":"https:\/\/graph.facebook.com\/100004790803061\/friends?format=json&access_token=AAABtTr8g5U4BANiJdCiBFxQeg0l1eqYYzmSWVM8G1UlyAhTtUrAsoEZAgU19dECXTE2nw7pHIz8bDb7OJGM4wAwzusOVZAQN8yaiYVsQZDZD&limit=5000&offset=5000&__after_id=1610349118"}}}, error: null, isFromCache:false}

誕生日がないもの。

4

2 に答える 2

13

最初に、認証された場合に友人や誕生日の情報を取得するコールバックを定義します。

Session.StatusCallback statusCallback =  new Session.StatusCallback() {

  // callback when session changes state
  @Override
  public void call(Session session, SessionState state, Exception exception) {
    if (session.isOpened()) {
        // Private method, to be defined
        makeFriendsRequest();
    }
  }

};

次に、セッションを開いて、必要な「friends_birthday」権限リクエストを渡すことができます。

Session session = new Session(this);
session.openForRead(new Session.OpenRequest(this)
                       .setCallback(statusCallback)
                       .setPermissions(Arrays.asList("friends_birthday")));

最後に、誕生日を含む友人情報を取得するために使用できる認証後の方法を次に示します。

private void makeFriendsRequest() {
    Request myFriendsRequest = Request.newMyFriendsRequest(Session.getActiveSession(), 
            new Request.GraphUserListCallback() {

        @Override
        public void onCompleted(List<GraphUser> users, Response response) {
            if (response.getError() == null) {
                // Handle response
            }

        }

    });
    // Add birthday to the list of info to get.
    Bundle requestParams = myFriendsRequest.getParameters();
    requestParams.putString("fields", "name,birthday");
    myFriendsRequest.setParameters(requestParams);
    myFriendsRequest.executeAsync();
}

Facebook ログインを実装するさまざまな方法を探している場合は、SDK にバンドルされている SessionLoginSample アプリも確認してください。

于 2012-12-28T01:52:11.973 に答える
0

私はこれを使ってみてください:

URL url = "http://YOUR_QUERY_URL_WITH_PARAMS";
InputStream is = null;
URLConnection connection = url.openConnection();
String line;
StringBuilder builder = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(                        connection.getInputStream()));
while ((line = reader.readLine()) != null) 
{
    builder.append(line);
}
String jSONString = builder.toString();
JSONObject jSONObject = new JSONObject(jSONString);

次に、受信したデータを取得して表示します。

注:私はこのコードをテストしていません。テストするAndroidデバイスはもうありませんが、正しい方向を示す必要があります。

于 2012-12-21T07:05:54.287 に答える