2012-10-27 130 views
0

可能重复:
launch facebook app from other appAndroid如何打开Facebook应用程序?

我做一个Android项目,在该项目中,我需要得到这样的用户ID,Facebook上的accessToken用户详细信息。

使用Fcebook SDK完成Facebook集成。

现在,Facebook发布URL计划要打开Facebook应用程序并获取用户详细信息。

我做过这样的,

long longFacebookUid = Long.parseLong(facebookUid); 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setClassName("com.facebook.katana", "com.facebook.katana.ProfileTabHostActivity"); 
intent.putExtra("extra_user_id", facebookUid); 
this.startActivity(intent); 
return; 

在此代码调用Facebook应用程序,之后,我不无如何获得帐户及令牌。

谢谢。

+2

看到这个接受的答案..恰好解释http://stackoverflow.com/questions/13068866/android-how-to-get-user-details-after-successful-login-through-facebook/13069081#13069081 – AndroidLearner

+0

那是我的Facebook工作正常。我需要打开Facebook应用程序并获取用户的详细信息。 – Jeeva123

+0

你想让我解析回应吗? – AndroidLearner

回答

0

除了URL ScheemE之外,使用基于SDK的函数更简单,但它可能不是您想要的答案。

备注:以下信息是基于Facebook的机器人SDK 2.0(3.0是avaliable现在)

运行在authorize函数(登录部分)后(以下为Facebook的文档中的示例代码)

facebook.authorize(this, new String[] {}, new DialogListener() { 
      @Override 
      public void onComplete(Bundle values) { 
       SharedPreferences.Editor editor = mPrefs.edit(); 
       editor.putString("access_token", facebook.getAccessToken()); 
       editor.putLong("access_expires", facebook.getAccessExpires()); 
       editor.commit(); 
      } 

      @Override 
      public void onFacebookError(FacebookError error) {} 

      @Override 
      public void onError(DialogError e) {} 

      @Override 
      public void onCancel() {} 
     }); 
    } 

为了获得访问令牌,只要运行下面的函数在SDK 2.0

String access_token=facebook.getAccessToken(); 

用户id

public String GetUserID(){ 
    Bundle params = new Bundle(); 
    params.putString("fields", "id"); 
    String resp= ""; 
    try { 
     resp = facebook.request("me", params, "GET");//call the request function in SDK 2.0, using graph api 
    } catch (FileNotFoundException e) { 
    } catch (MalformedURLException e) { 
    } catch (IOException e) { 
    } 
    try{ 
     resp = new JSONObject(resp).getString("id"); 
    }catch(JSONException e1){ 
    } 
    } 
    return resp; 
}; 

我认为这些是获取结果的最简单的方法,但不使用URL SCHEME。

我希望它能帮助你。

相关问题