使用Titanium的Facebook模块无法访问令牌错误,无法loginFacebook

我正在使用Titanium Studio 3.2.0和Titanium SDK 3.2.0.GA,并且在有或没有Facebook应用程序的情况下部署到Android设备。 要login到Facebook,我正在使用Titanium提供的那个 。

我有这个链接中描述的相同的问题。 当我第一次授权时,来自Facebook的login事件完全没有问题。 但是,如果我注销,然后尝试再次授权(在这一点上我的应用程序的权限已被接受,所以理论上它应该触发login事件)我得到logcat上的以下错误:

E/FacebookModule( 1584): (main) [11631,11631] LoginDialogListener onFacebookError: Invalid access token. E/FacebookModule( 1584): com.facebook.android.FacebookError: Invalid access token. E/FacebookModule( 1584): at com.facebook.android.Facebook.onSessionCallback(Facebook.java:433) E/FacebookModule( 1584): at com.facebook.android.Facebook.access$000(Facebook.java:97) E/FacebookModule( 1584): at com.facebook.android.Facebook$2.call(Facebook.java:379) E/FacebookModule( 1584): at com.facebook.Session$3$1.run(Session.java:1239) E/FacebookModule( 1584): at android.os.Handler.handleCallback(Handler.java:605) E/FacebookModule( 1584): at android.os.Handler.dispatchMessage(Handler.java:92) E/FacebookModule( 1584): at android.os.Looper.loop(Looper.java:154) E/FacebookModule( 1584): at android.app.ActivityThread.main(ActivityThread.java:4624) E/FacebookModule( 1584): at java.lang.reflect.Method.invokeNative(Native Method) E/FacebookModule( 1584): at java.lang.reflect.Method.invoke(Method.java:511) E/FacebookModule( 1584): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809) E/FacebookModule( 1584): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576) E/FacebookModule( 1584): at dalvik.system.NativeStart.main(Native Method) E/FacebookModule( 1584): (main) [6,11637] onAuthFail: Invalid access token. 

我甚至试图用try / catch来处理这个错误,但是即使我把调用放在一个里面,catch里面的代码也没有被执行。 就我所知,如何进行授权没有任何不寻常之处:

 $.LoginButtonHolder.addEventListener('singletap', function(e) { $.activityIndicator.show(); $.LoginButtonLabel.setOpacity(0); try { fb.authorize(); } catch(err) { // if the authorize call fails, show the error on the console and show the controls to try again // but these four lines of code never get executed, an unhandled exception is still thrown Ti.API.info('error in Facebook login'); Ti.API.info(err); $.activityIndicator.hide(); $.LoginButtonLabel.setOpacity(1); } }); 

经过一番挖掘,我意识到了一些东西,第一次尝试授权我被redirect到Facebook应用程序,并在接受权限后,login事件被激发,就像它应该(作为certificate我得到一个访问令牌),当我注销用于会话的访问令牌是无效的(我在注销事件中检查了它),然后如果我尝试再次授权,似乎Facebook模块没有伸出新的访问令牌,即使我的应用程序已经允许,它试图使用无效的,因此抛出这个无效的访问令牌, 虽然这只是我的一部分的猜测,我不知道这是否是原因

我怎么解决这个问题? 我目前使用的解决scheme是通过Graph API调用来从我的Facebook用户帐户中删除权限,这是不正确的方式,但这是我再次触发Facebooklogin事件的唯一方法。

我也检查了我的哈希键,他们似乎是为了,因为我没有无效的哈希键消息,这里的问题是访问令牌,授权调用应该返回一个访问令牌,据我所知,有不同的过期我有错误的想法?

根据这个Facebook的开发者链接 ,当访问令牌到期时有四种情况,但是对于注销情况我得到一个不同的错误消息,那里显示的错误消息是validation访问令牌的错误:会话是无效的,因为用户注销 ,而我得到的是LoginDialogListener onFacebookError:无效的访问令牌 。 什么导致我得到的错误消息?

任何帮助将不胜感激,在此先感谢。

Solutions Collecting From Web of "使用Titanium的Facebook模块无法访问令牌错误,无法loginFacebook"