2012-01-12 73 views
4

我一直在試圖將Facebook SDK應用到我的應用程序中,以便讓用戶通過應用程序在我們的fanwall上發佈消息。但是,即使通過SDK登錄用戶,我也沒有成功。Facebook SDK僅適用於活動嗎?

在SDK示例中,給出了一個簡單示例,該示例使用Activity來嘗試使用Single Sign-On授權用戶。我自己嘗試過這個例子,它工作。我可以登錄,我不得不授權應用程序使用我的Facebook數據,我可以看到在LogCat中發出和接收的請求。

現在,我已經嘗試將相同的代碼添加到我自己的應用程序。此應用程序的Fragment基於使用兼容性包。有一箇中心FragmentActivity和我的其他課程很簡單Fragments。將示例代碼添加到其中一個Fragments時,Facebook應用程序在嘗試授權時啓動了半秒,但之後關閉並且什麼也沒有發生。我又回到了我的常規片段。

當檢查後,這個logcat中,沒有跡象表明Facebook的應用程序甚至打開或比它顯示了一些印刷檢查我補充的是,它說,它開始了Facebook意圖的事實以外的任何請求:

01-12 13:19:40.874: I/System.out(6087): Calling authorize 
01-12 13:19:40.874: I/ActivityManager(1380): Starting activity: Intent { cmp=com.facebook.katana/.ProxyAuth (has extras) } from pid 6087 
01-12 13:19:40.874: I/System.out(6087): Called authorize 

除此之外,什麼都不會返回。沒有Facebook的檢查,沒有聲明說我的鑰匙是錯的或什麼的,什麼都沒有。 Facebook的意圖被稱爲,但幾乎立即關閉,沒有別的表明它甚至是開放的。

這幾個小時現在令我驚慌,我開始認爲由於Fragments的工作方式,Fragments正常,樣品提供的方法不起作用。

我一直在使用的代碼發佈如下。片段被一個調用FragmentTransaction的按鈕觸發。我在這裏做了一些根本性的錯誤,還是Facebook SDK真的不適用於Fragments?我試過尋找這個問題,但是我一直沒能找到其他人有同樣的情況。


public class FanWallFacebook extends Fragment { 

    Facebook facebook = new Facebook("294678133912628"); 

    public FanWallFacebook() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.filler, container, false); 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 

     System.out.println("Calling authorize"); 
     facebook.authorize(getActivity(), new DialogListener() { 
      @Override 
      public void onComplete(Bundle values) { 
       System.out.println("Completed"); 
      } 

      @Override 
      public void onFacebookError(FacebookError error) { 
       System.out.println("Facebook error: "+error.getMessage()); 
      } 


      @Override 
      public void onError(DialogError e) { 
       System.out.println("General error: "+e.getMessage()); 
      } 

      @Override 
      public void onCancel() { 
       System.out.println("Cancelled"); 
      } 
     }); 

     System.out.println("Called authorize"); 

    } 

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

     facebook.authorizeCallback(requestCode, resultCode, data); 
     System.out.println("Authorize callback'd"); 
    } 

} 

編輯

只使用一個FragmentActivity試過了,你瞧,這不工作。它成功登錄。看起來像SDK真的只適用於明確擴展...Activity的類。任何人都可以給我一個想法,爲什麼可能是這種情況?我一直認爲Fragments下延伸Activity以及。

+0

我在這裏發現了同樣的問題。 – 2012-03-20 21:40:11

+0

「Fragment」在其層次結構中的任何位置都沒有「Activity」。它直接從'Object'延伸出來。 – 2012-06-04 09:45:43

+0

有同樣的問題。 – LuxuryMode 2012-06-20 17:47:03

回答

0

我結束了對我的Facebook交互使用FragmentActivity。不是理想的解決方案,但它有效。

相關問題