2012-10-27 166 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。

我希望它能幫助你。

相關問題