Android Facebook SDK是否仅适用于活动?
我一直在尝试在我的应用程序中实现Facebook SDK,以便让用户通过该应用程序在我们的fanwall上发布消息。然而,我甚至在通过SDK登录用户时都没有成功 在SDK示例中,给出了一个简单的示例,它使用Android Facebook SDK是否仅适用于活动?,android,facebook,android-fragments,Android,Facebook,Android Fragments,我一直在尝试在我的应用程序中实现Facebook SDK,以便让用户通过该应用程序在我们的fanwall上发布消息。然而,我甚至在通过SDK登录用户时都没有成功 在SDK示例中,给出了一个简单的示例,它使用活动尝试使用单点登录对用户进行授权。我自己也试过这个例子,效果很好。我可以登录,我必须授权应用程序使用我的Facebook数据,并且我可以在LogCat中看到正在发出和接收的请求 现在,我已经尝试将相同的代码添加到我自己的应用程序中。此应用程序是基于兼容包的Fragment。有一个中心的Fra
活动
尝试使用单点登录对用户进行授权。我自己也试过这个例子,效果很好。我可以登录,我必须授权应用程序使用我的Facebook数据,并且我可以在LogCat中看到正在发出和接收的请求
现在,我已经尝试将相同的代码添加到我自己的应用程序中。此应用程序是基于兼容包的Fragment
。有一个中心的FragmentActivity
,其余的类都是简单的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的意图被称为,但几乎立即关闭,没有任何其他迹象表明它甚至是开放的
这几个小时来一直困扰着我,我开始认为常规的、提供示例的方法在片段
中不起作用,因为片段
的工作方式
下面是我一直使用的代码。片段由一个按钮触发,该按钮调用FragmentTransaction
。我在这里做了一些根本错误的事情,还是Facebook SDK真的不能处理片段
?我已经试着寻找这个问题,但我还没有找到其他人有同样的情况
编辑
刚试过使用一个片段活动
,瞧,这确实有效。它已成功登录。看起来SDK实际上只适用于显式扩展…Activity
的类。谁能告诉我为什么会这样?我一直认为Fragments
在某个地方扩展了活动
。我最终使用了FragmentActivity
与Facebook进行互动。这不是理想的解决方案,但它很有效。嗯
具有实现FragmentActivity
的活动,因此问题得以解决。AFragment
在其层次结构中的任何位置都没有活动。它直接从对象扩展而来
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");
}
}