8

我遵循「使用Facebook登錄創建新的Android項目」部分的步驟https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/登錄過程很好。因爲我想爲用戶登錄使用原生的Android按鈕,所以我通過將下面的代碼移動到原生Android按鈕的View.OnClickListener()中來稍微修改代碼。以下是在聽者的代碼:)使用Facebook SDK 3的額外權限登錄Android的

Session.openActiveSession(MainActivity.this, true, new Session.StatusCallback() { 
    // callback when session changes state 
    @Override 
    public void call(Session session,SessionState state, Exception exception) { 
     if (session.isOpened()) {       
      // make request to the /me API 
      Request.executeMeRequestAsync(session,new Request.GraphUserCallback() { 

       // callback after Graph API 
       // response with user object 
       @Override 
       public void onCompleted(GraphUser user,Response response) { 
        if (user != null) { 
         Toast.makeText(getApplicationContext(), "Hello " + user.getName() +" "+user.getId()+"!", Toast.LENGTH_LONG).show(); 
        } 
       } 
      }); 
     } 
    } 
}); 

的onActivityResult(和AndroidManifest.xml中是一樣的教程

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 
} 

不過,我想要求得到「read_friendlists」當用戶登錄成功。我在https://developers.facebook.com/docs/tutorials/androidsdk/3.0/scrumptious/authenticate/閱讀教程,但它使用Facebook SDK自定義按鈕。我怎樣才能達到像我上面顯示的代碼原生Android按鈕相同的行爲?

+0

[看看這篇文章](https://developers.facebook.com/docs/教程/ androidsdk/3.0 /美味/顯示-朋友/); –

+3

@Adil謝謝!閱讀完這篇文章後,我認爲教程(或者SDK?)的缺點是它封裝了太多的細節。因此,開發人員將SDK用於自定義程序流和UI並不容易。另一個例子是https://developers.facebook.com/docs/tutorials/androidsdk/3.0/scrumptious/authenticate/。 SDK提供的登錄按鈕很容易使用,但很難定製UI並保持其實現/功能。我認爲觀點和控制應該分開。 – Greenhand

+0

是的,我使用的是遊戲引擎,並沒有使用任何android視圖,只是使用opengl,我不知道如何實現這一點。 – Mustafa

回答

3

我剛剛在另一篇文章中回答了一個類似的問題。我的解決方案允許您使用原生按鈕並在用戶首次登錄時請求額外的讀取權限。請在此處查看。Ask for more permissions with 3.0 SDK

相關問題