Appcelerator/Titanium:createLoginButton 在 android 平台上触发错误
Appcelerator/Titanium : createLoginButton fires error on android platform
我正在将 Facebook 模块添加到我的应用程序中,以便通过 appcelerator/titanium 和 alloy 框架使用登录 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
我真的不明白这个错误,也不明白如何修复它。
如果你们中有人知道答案...:)
提前致谢,
昆汀
在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"/>
应用程序 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 不是以编程方式设置的。
我正在将 Facebook 模块添加到我的应用程序中,以便通过 appcelerator/titanium 和 alloy 框架使用登录 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
我真的不明白这个错误,也不明白如何修复它。 如果你们中有人知道答案...:)
提前致谢,
昆汀
在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"/>
应用程序 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 不是以编程方式设置的。