在我的应用程序中,我想获取Facebook的好友列表。是否可以从Facebook SDK获取好友列表。我尝试了很多,但我没有成功。 任何人都可以帮我解决这个问题。
答案 0 :(得分:1)
是的,当然可以在安卓Graph Api
中使用但出于安全目的,条件是您只能获得正在使用您的应用的朋友列表。 Refer This Link还要检查此tutorial和此answer
以下是登录后的一些代码段,您将获得
GraphRequestAsyncTask graphRequestAsyncTask = new GraphRequest(loginResult.getAccessToken(),"/me/friends",bundle, HttpMethod.GET,new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
try {
JSONArray rawName = response.getJSONObject().getJSONArray("data");
friendList = "{\"friendlist\":" + rawName.toString() + "}";
//String friendlist = rawName.toString() ;
Log.d("TAG","response of friendlist is : " + friendList);
/* //coding for insert data in db.
String result = JSONUtils.insertUserprofile(imagePath, name, fbid, friendList);
Log.d("TAG", "Result of fb is : " + result);
if (result.toLowerCase().contains("success")) {
myPreferences.setFBUserId(Constant.PREFERENCE_LOGIN_FB, fbid);
//LoginManager.getInstance().logOut();
}*/
} catch (JSONException e) {
e.printStackTrace();
}
}
}).executeAsync();
答案 1 :(得分:0)
login.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
if (AccessToken.getCurrentAccessToken() != null) {
RequestData();
}
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException exception) {
}
});
请求数据
private void RequestData() {
GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object,GraphResponse response) {
new GraphRequest(
AccessToken.getCurrentAccessToken(),
// "/me/friends",
//"me/taggable_friends",
"me/invitable_friends",
null,
HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
try {
JSONArray rawName = response.getJSONObject().getJSONArray("data");
Log.e(TAG,"Json Array Length "+rawName.length());
Log.e(TAG,"Json Array "+rawName.toString());
for (int i = 0; i < rawName.length(); i++) {
JSONObject c = rawName.getJSONObject(i);
String name = c.getString("name");
Log.e(TAG, "JSON NAME :"+name);
JSONObject phone = c.getJSONObject("picture");
Log.e(TAG,""+phone.getString("data"));
JSONObject jsonObject = phone.getJSONObject("data");
String url = jsonObject.getString("url").toString();
Log.e(TAG,"@@@@"+jsonObject.getString("url").toString());
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
).executeAsync();
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,link,email,picture");
request.setParameters(parameters);
request.executeAsync();
}