简体   繁体   English

如何解析facebook JSON响应

[英]how to Parse facebook JSON response

I think the return value from facebook is ambiguous.: 我认为Facebook的回报价值含糊。

    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {

            GraphRequest request = GraphRequest.newMeRequest(
                    loginResult.getAccessToken(),
                    new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(
                                JSONObject object,
                                GraphResponse response) {
                            // Application code

                            try {
                                JSONObject jsonObject = new JSONObject(response.toString());



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

                            }



                        }
                    });
            Bundle parameters = new Bundle();
            parameters.putString("fields", "id,name,email,gender, birthday");
            request.setParameters(parameters);
            request.executeAsync();

        }



        @Override
        public void onCancel() {
            Log.e("facebook","canceled");
        }

        @Override
        public void onError(FacebookException e) {

            Log.e("facebook error",e.getMessage().toString());
        }
    });

result : 结果:

{Response:  responseCode: 200, graphObject: {"id":"931177080295510","birthday":"06\/24\/1991","gender":"male","email":"smemamian@yahoo.com","name":"Masoud Emamian"}, error: null}

how to parse it ? 怎么解析呢?

What about using google gson? 如何使用Google Gson? https://github.com/google/gson https://github.com/google/gson

I use it for every Android project where I need to serialize/deserialize json. 我将其用于需要序列化/反序列化json的每个Android项目。 Give it a try, here are some basic examples for you which should satisfy your needs: 试试看,这里有一些基本的示例可以满足您的需求:

Deserialization: 反序列化:

int one = gson.fromJson("1", int.class);
Integer one = gson.fromJson("1", Integer.class);
Long one = gson.fromJson("1", Long.class);
Boolean false = gson.fromJson("false", Boolean.class);
String str = gson.fromJson("\"abc\"", String.class);
String anotherStr = gson.fromJson("[\"abc\"]", String.class);

If not, check the documentation here: https://sites.google.com/site/gson/gson-user-guide 如果不是,请在此处查看文档: https : //sites.google.com/site/gson/gson-user-guide

do it with this code. 用此代码来完成。 it's works for me. 对我有用。

 loginButton = (LoginButton) findViewById(R.id.login_button); List < String > permissionNeeds = Arrays.asList("user_photos", "email", "user_birthday", "public_profile", "AccessToken"); loginButton.registerCallback(callbackManager, new FacebookCallback < LoginResult > () {@Override public void onSuccess(LoginResult loginResult) { System.out.println("onSuccess"); String accessToken = loginResult.getAccessToken() .getToken(); Log.i("accessToken", accessToken); GraphRequest request = GraphRequest.newMeRequest( loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {@Override public void onCompleted(JSONObject object, GraphResponse response) { Log.i("LoginActivity", response.toString()); try { id = object.getString("id"); try { URL profile_pic = new URL( "http://graph.facebook.com/" + id + "/picture?type=large"); Log.i("profile_pic", profile_pic + ""); } catch (MalformedURLException e) { e.printStackTrace(); } name = object.getString("name"); email = object.getString("email"); gender = object.getString("gender"); birthday = object.getString("birthday"); } catch (JSONException e) { e.printStackTrace(); } } }); Bundle parameters = new Bundle(); parameters.putString("fields", "id,name,email,gender, birthday"); request.setParameters(parameters); request.executeAsync(); } @Override public void onCancel() { System.out.println("onCancel"); } @Override public void onError(FacebookException exception) { System.out.println("onError"); Log.v("LoginActivity", exception.getCause().toString()); } }); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM