2012-10-12 49 views
2

我按照API Facebook的指南,下面的代碼:經過授權facebook權限的Facebook不開

ib2 = (ImageButton) findViewById(R.id.imageButton2); 

    list = new OnClickListener() { 

     public void onClick(View v) { 

      /* 
      * Get existing access_token if any 
      */ 
      mPrefs = getPreferences(MODE_PRIVATE); 
      String access_token = mPrefs.getString("access_token", null); 
      long expires = mPrefs.getLong("access_expires", 0); 
      if(access_token != null) { 
       facebook.setAccessToken(access_token); 
      } 
      if(expires != 0) { 
       facebook.setAccessExpires(expires); 
      } 

      /* 
      * Only call authorize if the access_token has expired. 
      */ 
      if(!facebook.isSessionValid()) { 

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

        public void onFacebookError(FacebookError error) {} 

        public void onError(DialogError e) {} 

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


    ib2.setOnClickListener(list); 

而且

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

    facebook.authorizeCallback(requestCode, resultCode, data); 
} 

每一個在用正確的報關權的地位。並且...

第一次在按鈕上進行Onclick,Facebook問我接受我的應用程序所需的權限。

但是......

我第二次做的onclick同一個按鈕上,Facebook的窗口不開。爲什麼可以這樣?

如果我設置了權限,我應該看到授權確定!

回答

1

您是否安裝了官方的Facebook應用程序?因爲如果你這樣做,這是一個錯誤,我相信他們仍然沒有修復。

我不知道如果是這樣的問題,但你可以嘗試迫使對話框:facebook.authorize(Answer.this, new String[] {"user_about_me","publish_checkins"}, Facebook.FORCE_DIALOG_AUTH, new DialogListener() {

我不太明白你正在經歷什麼在這裏,所以請讓我知道它是如何工作的。

+0

我知道SO政策不只是發佈「感謝」,但...抱歉的政策「謝謝!」。我不僅沒有獲得任何Facebook窗口,如果應用程序在FB方面獲得授權,但只是沒有在Android方面運行,但它也只是......沒有任何陷阱或做任何其他事情的機會退出。如果你問我,非常不理想。所以無論如何,已經按照你在那裏推薦的方式進行了修改,並且通過jove它可以很好地運行。最後.. Facebook SDK錯誤列表在哪裏?我相信這不會是最後一次.. –

+0

我很高興聽到我可以幫助別人!我同意這是一個非常奇怪的錯誤,儘管我知道,這個解決方法可能不是最可靠的,但它對我很有用。完整的錯誤列表可以在這裏找到:developers.facebook.com/bugs/ – Plasma

0
"The first time doing Onclick on the button, facebook ask me to accept the permissions  required for my app." 

在這種情況下,因爲這是你第一次登錄與Facebook的應用程序,你的應用程序沒有訪問令牌和到期

facebook.isSessionValid()= FALSE

- - > facebook.authorize()將運行

Facebook將要求您提供許可(如您Facebook的戶頭之前從未允許您的應用程序)

但對於秒OND時間,

訪問令牌和到期一直保存到sharepreference, ==> facebook.isSessionValid()是真實的,

==> facebook.authorize()將無法運行

==>看起來像登錄

因此facebook窗口不會彈出。

如果你想看到Facebook的再次彈出窗口,

1)清理應用的緩存

2)終止應用程序(在sharepreference訪問令牌很清楚)

然後你可以看到一個Facebook登錄窗口彈出,但你不會看到准許頁面,因爲你已經允許你的應用程序(只需要允許一次)

如果你想再次看到Facebook權限頁面,你的Facebook,去私有cy設置 - >廣告,應用程序和網站 - >按編輯設置和未授權您的APP。 然後準備頁面會彈出再次爲您的下一次登錄到應用程序