我一直在試圖將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
以及。
我在這裏發現了同樣的問題。 – 2012-03-20 21:40:11
「Fragment」在其層次結構中的任何位置都沒有「Activity」。它直接從'Object'延伸出來。 – 2012-06-04 09:45:43
有同樣的問題。 – LuxuryMode 2012-06-20 17:47:03