2011-11-02 65 views
0

我正在学习将facebook sdk整合到现有的android应用程序中。我相信我的一切运行良好,但是,我的应用程序每当我的应用程序加载时都会显示一个带有进度加载器的空白Facebook页面。这是故意的吗?该页面可以隐藏吗?Android + Facebook +在应用程序加载时隐藏Facebook屏幕?

public class MainActivity extends ListActivity{ 
    Facebook facebook = new Facebook("***************"); 
    String FILENAME = "AndroidSSO_data"; 
    private SharedPreferences mPrefs; 
    ... 
    @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      /* 
      * 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(this, new DialogListener() { 
        @Override 
        public void onComplete(Bundle values) {} 

        @Override 
        public void onFacebookError(FacebookError error) {} 

        @Override 
        public void onError(DialogError e) {} 

        @Override 
        public void onCancel() {} 

       }); 
      } 
    ... 
    //thread is created here to populate listview data 
    } 
} 

更新:我现在有钥匙散列工作。在我的列表视图显示之前,我仍然可以看到带有进度加载器的默认Facebook页面。每次我现在启动应用程序时,我还会看到“权限”页面。

NEW UPDATE: 当我从应用程序中跟踪facebook.isSessionValid()时,我收到“false”的同时登录官方FB应用程序(在模拟器上)。这是一个错误?任何额外的帮助表示赞赏!

+0

这是Facebook登录期间吗?如果您可以更清楚地了解您的应用在这一点上做了什么/共享您的代码,这将有所帮助? – Torid

+0

当应用程序加载时,它从字符串xml收集数据并填充ListView。这个动作发生在一个单独的线程中。用户已登录,但在我的列表显示之前,我仍然看到一个Facebook加载页面。 – worked

回答

0

如果设备不支持一键登录(在这种情况下,它会暂时将您带到facebook应用程序),则facebook.authorize将创建一个对话框。该对话框使用WebView连接到移动友好的Facebook登录页面,并为您处理所有事情,并通过DialogListener进行报告。

由于在您的onCreate方法中调用了授权,所以无论何时第一次启动Activity(并且sesson无效),它都会显示对话框。

+0

我现在想知道,即使我的关键哈希在这一点上工作。我正在测试android fb sdk自带的例子,并且我继续收到“Login Failed:Invalid_Key”错误。 – worked

+0

您的Facebook密钥必须链接到您签署该版本的证书 - 在开发过程中,这可能是您的Debug .keystore。你必须在脸书上注册,但我猜你已经完成了,因为你已经有了钥匙。 我帮助一位同样有类似问题的朋友回来,他会与他一起检查他是如何解决这个问题的。 – FunkTheMonk

+0

非常感谢,谢谢! – worked