【发布时间】:2015-11-01 12:07:21
【问题描述】:
我已经通过登录按钮登录到 facebook,我可以获取关于我自己的信息,但是由于某种原因,当我尝试获取朋友列表时,我得到了一个空的 json 数组作为回报。 这是示例代码: (我在我的 facebook 回调私有类的 on success 方法上调用图形请求)
private CallbackManager callbackManager;
private FacebookCallback <LoginResult> mCallBack = new FacebookCallback <LoginResult> () {
@Override
public void onSuccess(LoginResult loginResult) {
//some code
GraphRequest request = GraphRequest.newMyFriendsRequest(
AccessToken.getCurrentAccessToken(),
new GraphRequest.GraphJSONArrayCallback() {
@Override
public void onCompleted(JSONArray array, GraphResponse response) {
if (response != null) {
Log.d("FB", "response isnt null");
}
if (array != null) {
Log.d("FB", "array: " + array.toString());
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "first_name,last_name,name,id");
request.setParameters(parameters);
request.executeAsync();
Log.d("FB", "parameters: " + parameters.toString());
}
@Override
public void onCancel() {
statusText.setText("you have to connect");
}
@Override
public void onError(FacebookException e) {
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getActivity().getApplicationContext());
callbackManager = CallbackManager.Factory.create();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_main, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
statusText = (TextView) view.findViewById(R.id.status_text);
loginButton = (LoginButton) view.findViewById(R.id.login_button);
loginButton.setReadPermissions("user_friends");
loginButton.setFragment(this);
loginButton.registerCallback(callbackManager, mCallBack);
}
我尝试了这两种方法,因为无论我不问他,facebook 图形查询都会显示 id:
parameters.putString("fields", "first_name,last_name,name,id");
parameters.putString("fields", "first_name,last_name,name");
我错过了什么吗?
回答: 我知道graph api 2.0及更高版本并没有显示你所有的朋友列表,而是只会显示安装了你的应用程序并从你的应用程序连接到他们的FB帐户的朋友,也就是说,如果你发布了你的应用到 Play 商店。如果您的应用程序仍在开发中且尚未发布,您将无法看到任何朋友,除非您将他们添加为“测试人员”并且您/他们在手机/模拟器上安装了该应用程序并从他们的帐户登录。
要将某人添加为测试人员,只需转到 facebook 开发人员,然后:单击顶部工具栏上的“我的应用程序”-> 从列表中选择您的应用程序-> 单击左侧面板上的“角色”-> 单击在“添加测试人员”按钮上 -> 选择您想要添加为测试人员的朋友。
【问题讨论】:
标签: java android facebook facebook-graph-api