如何解析Facebook的JSON响应 [英] how to Parse facebook JSON response
本文介绍了如何解析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屋!
查看全文