如何解析Facebook的JSON响应 [英] how to Parse facebook JSON response

查看:300
本文介绍了如何解析Facebook的JSON响应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从Facebook的返回值是不明确的:

  loginButton.registerCallback(callbackManager,新FacebookCallback< LoginResult>(){
        @覆盖
        公共无效的onSuccess(LoginResult loginResult){

            GraphRequest请求= GraphRequest.newMeRequest(
                    loginResult.getAccessToken(),
                    新GraphRequest.GraphJSONObjectCallback(){
                        @覆盖
                        公共无效onCompleted(
                                的JSONObject对象,
                                GraphResponse响应){
                            //应用code

                            尝试 {
                                的JSONObject的JSONObject =新的JSONObject(response.toString());



                            }赶上(JSONException E){
                                e.printStackTrace();
                            }赶上(NullPointerException异常E){

                            }



                        }
                    });
            捆绑参数=新包();
            parameters.putString(域,编号,姓名,电子邮箱,性别,生日);
            request.setParameters(参数);
            request.executeAsync();

        }



        @覆盖
        公共无效OnCancel的(){
            Log.e(脸谱,取消);
        }

        @覆盖
        公共无效onerror的(FacebookException E){

            Log.e(Facebook的错误,e.getMessage()的toString());
        }
    });
 

结果:

  {响应:响应code:200,graphObject: {"id":"931177080295510","birthday":"06\/24\/1991","gender":"male","email":"smemamian@yahoo.com","name":"Masoud Emamian},错误:空}
 

如何解析呢?

解决方案

本code做到这一点。这是我的作品。

loginButton =(LoginButton)findViewById(R.id.login_button); 名单<字符串> permissionNeeds = Arrays.asList(user_photos,电子邮件, user_birthday,public_profile,AccessToken); loginButton.registerCallback(callbackManager, 新FacebookCallback< LoginResult> (){@覆盖 公共无效的onSuccess(LoginResult loginResult){ 的System.out.println(的onSuccess); 字符串accessToken = loginResult.getAccessToken() .getToken(); Log.i(accessToken,accessToken); GraphRequest请求= GraphRequest.newMeRequest( loginResult.getAccessToken(), 新GraphRequest.GraphJSONObjectCallback(){@覆盖 公共无效onCompleted(的JSONObject对象, GraphResponse响应){ Log.i(LoginActivity,response.toString()); 尝试 { ID = object.getString(ID); 尝试 { URL profile_pic =新的URL( http://graph.facebook.com/+编号+?/图像类型=大); Log.i(profile_pic profile_pic +); }赶上(MalformedURLException异常E){ e.printStackTrace(); } 名称= object.getString(姓名); 电子邮件= object.getString(电子邮件); 性别= object.getString(性别); 生日= object.getString(生日); }赶上(JSONException E){ e.printStackTrace(); } } }); 捆绑参数=新包(); parameters.putString(域, 编号,姓名,电子邮箱,性别,生日); request.setParameters(参数); request.executeAsync(); } @覆盖 公共无效OnCancel的(){ 的System.out.println(OnCancel的」); } @覆盖 公共无效onerror的(FacebookException除外){ 的System.out.println(onError的); Log.v(LoginActivity,exception.getCause()的toString()); } });

I think the return value from facebook is ambiguous.:

    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 ?

解决方案

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());
	}
});

这篇关于如何解析Facebook的JSON响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆