我想获取我朋友列表中的所有生日。我已经尝试了好几天。我的代码如下。
Facebook facebook = new Facebook(<MY_FACEBOOK_ID>); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = this; setContentView(R.layout.main); showNotification(); final String[] PERMISSIONS = new String[] {"user_location", "user_birthday"}; facebook.authorize(this, PERMISSIONS, new DialogListener() { @Override public void onComplete(Bundle values) {} @Override public void onCancel() {} @Override public void onFacebookError(FacebookError e) { // TODO Auto-generated method stub } @Override public void onError(DialogError e) { // TODO Auto-generated method stub } }); try { String token = facebook.getAccessToken(); Bundle bundle = new Bundle(); bundle.putString("fields", "id,name"); bundle.putString("access_token", token); String response = facebook.request( "me/friends", bundle ); facebook.setAccessToken(facebook.getAccessToken()); Toast.makeText(mContext, token , Toast.LENGTH_LONG).show(); Toast.makeText(mContext, response, Toast.LENGTH_LONG).show(); JSONObject json = Util.parseJson( response ); JSONArray data = json.getJSONArray( "data" ); for ( int i = 0; i < data.length(); i++ ) { JSONObject friend = data.getJSONObject( i ); String id = friend.getString( "id" ); String name = friend.getString( "name" ); Toast.makeText(mContext, "ID: "+ id , Toast.LENGTH_LONG).show(); Toast.makeText(mContext, "NAME: "+ name , Toast.LENGTH_LONG).show(); }
每次我使用此代码都会产生错误。令牌都显示为空,响应都显示为问题“必须使用活动访问令牌来查询有关当前用户的信息”
创建一个方法:
getProfileInformation()
在方法主体中,您必须编写:
public void getProfileInformation() { mAsyncRunner.request("me", new RequestListener() { @Override public void onComplete(String response, Object state) { Log.d("Profile", response); String json = response; try { JSONObject profile = new JSONObject(json); // getting name of the user String name = profile.getString("name"); // getting email of the user String email = profile.getString("email"); //getting user birthday String birth_day=profile.getString("birthday"); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), "Name: " + name + "\nEmail: " + email, Toast.LENGTH_LONG).show(); } }); } catch (JSONException e) { e.printStackTrace(); } } @Override public void onIOException(IOException e, Object state) { } @Override public void onFileNotFoundException(FileNotFoundException e, Object state) { } @Override public void onMalformedURLException(MalformedURLException e, Object state) { } @Override public void onFacebookError(FacebookError e, Object state) { } });
}
上面的函数将从facebook获取json数据。您需要解析json以获得单独的配置文件数据。
来自Facebook的样本配置文件json将如下所示:
{ "id": "1464730016", "name": "XYZ", "first_name": "XYZ", "last_name": "ABC", "link": "https://....", "username": "XYZ", "birthday": "22/10/89", "hometown": }
有关更多详细信息,请参阅:
http://www.androidhive.info/2012/03/android-facebook-connect-tutorial/