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

回到顶部