在登录页面中,我获得了ACCESS_TOKEN。 但在朋友列表页面中,我没有获得ACCESS_TOKEN。 我的代码如下。请检查我的代码。
用户登录代码
mFacebook.authorize(this, sPermissions, new AuthorizeListener());
我使用AuthorizeListener()。这段代码
public class AuthorizeListener implements DialogListener {
String actoken;
@Override
public void onComplete(Bundle values) {
if (MainFragment.FacebookD) {
Log.w(MainFragment.LOG_TAG, "::: onComplate :::");
Log.w(MainFragment.LOG_TAG, "Access token : " + mFacebook.getAccessToken());
Token = mFacebook.getAccessToken();
actoken = getAppPreferences(IntroActivity.this, "ACCESS_TOKEN");
Log.w("GETAPPPREFERENCES",actoken);
}
}
......
我还写了onActivityResult方法。这段代码。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == MainFragment.FACEBOOK_AUTH_CODE) {
mFacebook.authorizeCallback(requestCode, resultCode, data);
Log.w("ACTIVITYRESULT","ACTIVITYRESULT");
}
}
......
Intent intent = new Intent(IntroActivity.this, NorinuriMain.class);
startActivity(intent);
登录后,意图页面(获取好友列表)
获取好友列表代码
public void setupFacebookfriend(){
Log.w("FacebookFREIND","START");
String userName;
String userSex;
try {
Log.w("gogogogo","START");
final JSONObject json = Util.parseJson(mFacebook.request("me/friends"));
JSONArray d = json.getJSONArray("data");
JSONObject o ;
for(int i = 0 ; i < d.length() ; i++){
JSONObject post=d.getJSONObject(i);
o = d.getJSONObject(i);
list.add(o.getString("data"));
list.add(post.getString("name"));
}
}catch (Exception e) {
e.printStackTrace();
}
facebookListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, list));
facebookListView.setItemsCanFocus(false);
facebookListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
}
这个逻辑没问题。但是会发生错误。
com.facebook.android.FacebookError:必须使用活动访问令牌来查询有关当前用户的信息。
为什么会这样?
答案 0 :(得分:0)
当Facebook对象没有有效的访问令牌时,会出现此错误。在尝试获取Facebook好友列表时,您必须检查会话是否有效。
if (mFacebook.isSessionValid()) {
Bundle parameters = new Bundle();
parameters.putString("message", msg);
try {
String response = mFacebook.request("me/friends", parameters,
"GET");
System.out.println(response);
JSONObject obj = Util.parseJson(response);
Log.i("json Response", obj.toString());
JSONArray array = obj.optJSONArray("data");
if (array != null) {
for (int i = 0; i < array.length(); i++) {
String name = array.getJSONObject(i).getString("name");
String id = array.getJSONObject(i).getString("id");
Log.i(name, id);
arrayListFacebookFriend.add(name);
arrayListFacebookFriendId.add(id);
// String response2 = mFacebook.request(id+"/feed",
// parameters,"POST");
// System.out.println(response);
// response = mFacebook.request(toID+"/feed",
// parameters, "POST");
}
Log.d("arrayList of Friend>>>>", ""
+ arrayListFacebookFriend);
}
} catch (IOException e) {
e.printStackTrace();
} catch (FacebookError e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
} else {
mFacebook.authorize(this, sPermissions, new AuthorizeListener());
}
检查有关此链接的更多信息:
Android Facebook .. how to get AccessToken
How to provide permission for login in my android application if user has fb account
我希望它能解决你的问题。