Mad*_*pal 2 java android facebook facebook-graph-api
我想得到我朋友名单中的所有生日日期.我已经试了好几天了.我的代码如下.
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();
}
Run Code Online (Sandbox Code Playgroud)
每次我使用此代码都会出错.并且令牌都显示为空并且响应显示问题"必须使用活动访问令牌来查询有关当前用户的信息"
创建方法:
getProfileInformation()
Run Code Online (Sandbox Code Playgroud)
在方法体中你必须写:
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) {
}
});
Run Code Online (Sandbox Code Playgroud)
}
上面的函数将从facebook获取json数据.您需要解析json以获取个人配置文件数据.
来自facebook的样本简介json将如下所示:
{
"id": "1464730016",
"name": "XYZ",
"first_name": "XYZ",
"last_name": "ABC",
"link": "https://....",
"username": "XYZ",
"birthday": "22/10/89",
"hometown":
}
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅:
http://www.androidhive.info/2012/03/android-facebook-connect-tutorial/
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11763 次 |
最近记录: |