Appcelerator / Titanium:android平台上的createLoginButton触发错误

时间:2016-10-12 09:25:03

标签: android facebook titanium appcelerator

我正在将Facebook模块添加到我的应用程序,以便使用appcelerator /钛合金框架登录Facebook按钮。

这是我的代码:

var fb = require('facebook'); 
fb.addEventListener('login',function(e){
  if(e.success){
        alert("connected");
  }else{
        alert("failure"); 
  }
});
fb.addEventListener('logout',function(e){
    if(e.success) {
      alert("successfully logged out"); 
    }else{
      alert("failure"); 
    }
});
var mybtn = fb.createLoginButton({
  'top':'160',
  'height':'35',
  'width':'80%'
}); 
$.login_form.add(mybtn);

这段代码似乎导致了这个问题:

var mybtn = fb.createLoginButton({
  'top':'160',
  'height':'35',
  'width':'80%'
}); 
$.login_form.add(mybtn);

错误如下:

exception on thread: main msg:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.copark.mobile/org.appcelerator.titanium.TiActivity}: Unexpected CallbackManager, please use the provided Factory.; Titanium 5.5.1,2016/09/27 05:39,b18727f

我真的不明白这个错误,也不知道如何解决它。 如果你们中的任何人都有答案...... :)

提前致谢,

昆汀

1 个答案:

答案 0 :(得分:0)

在require:

之后添加此代码
fb.initialize();
if(Ti.Platform.name == 'android'){
    $.login_form.fbProxy = fb.createActivityWorker({lifecycleContainer: $.login_form});
}

在android平台上,在tiapp.xml或AndroidManifest.xml中,您必须在节点内声明以下内容

<activity android:name="com.facebook.FacebookActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:label="YourAppName" android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" />

您还必须在节点内引用包含您的Facebook应用ID的字符串:

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>

app id进入文件/platform/android/res/values/strings.xml(或您的自定义主题),您应该在其中定义

<?xml version="1.0" encoding="utf-8"?>
    <resources>
        <!-- ... -->
        <string name="app_id">1234567890123456</string>
        <!-- ... -->
    </resources>
</xml>

其中数字当然是应用ID。应用程序ID未以编程方式设置。