Android从Facebook个人资料获取生日日期
我想获取我朋友列表中的所有生日。我已经尝试了好几天。我的代码如下。
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/
以上是 Android从Facebook个人资料获取生日日期 的全部内容, 来源链接: utcz.com/qa/409455.html