2011-07-21 29 views
3

我在Android上实现了Facebook登录功能,似乎在模拟器和Google Nexus设备上工作正常。但是,HTC Desire S上的用户似乎取消了授权,因此从不会调用onComplete()。我发现唯一的区别是HTC有一个内置的Facebook应用程序。这是我使用的代码:onComplete方法不要求htc欲望

private void Login(){ 
    facebook.authorize(this,new String[] {"email"}, new Facebook.DialogListener() { 
     @Override 
     public void onComplete(Bundle values) { 
      Log.d("Auth","onCompleteCalled"); 

     } 

     @Override 
     public void onFacebookError(FacebookError error) {} 

     @Override 
     public void onError(DialogError e) {} 

     @Override 
     public void onCancel() { 
      Log.d("Auth","Cancelled"); 

     } 
    }); 

错误消息来自Facebook的SDK这部分代码:

} else if (resultCode == Activity.RESULT_CANCELED) { 

      // An Android error occured. 
      if (data != null) { 
       Log.d("Facebook-authorize", 
         "Login failed: " + data.getStringExtra("error")); 
       mAuthDialogListener.onError(
         new DialogError(
           data.getStringExtra("error"), 
           data.getIntExtra("error_code", -1), 
           data.getStringExtra("failing_url"))); 

      // User pressed the 'back' button. 
      } else { 
       Log.d("Facebook-authorize", "Login canceled by user."); //This is the error I get 
       mAuthDialogListener.onCancel(); 
      } 
+0

什么版本的Facebook应用程序和你有什么Android版本你的愿望?我刚刚用2.2测试了一下。欲望(与Android 1.3.2的Facebook一起来),它适用于我(尽管回落到Web认证)。另外请注意,您可以从市场上更新Facebook应用程序,因此用户有机会获得最新版本而不是inbuild。 – 2011-07-21 11:38:34

+0

Facebook版本1.5.1,Htc Android版本2.3.3。尽管我的应用程序是在2.1版本上创建的。我也有Facebook的HTC Sense版本1,我也不能打破。 – JustCurious

+3

mFacebook.authorize(context, new String [] {“user_photos”,“friends_photos”,“publish_stream”}, -1, (DialogListener)dialogListener); “-1”完成了这项工作,调用传统的对话框而不是新的集成登录对话框。如果任何人有更好的解决方案,我会很高兴听到它。 积分Shane Oliver – JustCurious

回答

0

请在下方更新您的应用程序的代码,它会解决你的问题。

public void loginAndPostToWall() { 
    facebook.authorize(this, PERMISSIONS, Facebook.FORCE_DIALOG_AUTH, 
      new LoginDialogListener()); 
}