Appcelerator Facebook 模块不会触发登录事件

Appcelerator Facebook module doesn't fire login event

Appcelerator 5.2.0 Facebook 模块 (Android) 在成功登录后不会触发 'login' 事件。

会是什么?

var FB = require('facebook');
FB.initialize();
FB.permissions = ['public_profile', 'email', 'user_events'];
FB.forceDialogAuth = false;
FB.addEventListener('login', function() {
     alert('login');
});
FB.authorize();

谢谢!

你好奥克萨娜,

其他 Android 设置步骤 从 Facebook 模块 v4.0.0 开始,对于 Android 平台,您需要:

  • 将 Facebook 登录 activity 添加到 Android 清单
  • 将 Facebook 应用程序 ID 添加到 Android 资源 string.xml 文件
  • 创建一个 Facebook 代理并将其关联到当前活动 activity (你需要)

清单:

<ti:app>
    <android xmlns:android="http://schemas.android.com/apk/res/android">
        <manifest>
            <application>
                <activity android:label="@string/app_name"
                    android:name="com.facebook.LoginActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
                <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
            </application>
        </manifest>
    </android>
<ti:app>

将 Facebook 应用程序 ID 添加到 Android 资源

将字符串元素添加到 /platform/android/res/values/strings.xml 文件,并将名称属性设置为 facebook_app_id,并将节点文本设置为您的 Facebook 应用程序 ID。如果文件不存在则创建文件。

<resources>
    <string name="facebook_app_id">FACEBOOK_APP_ID</string>
</resources>

**我觉得这一步是你需要的=D **

创建 Facebook 代理

使用 createActivityWorker() 方法创建 Facebook 代理。将 lifecycleContainer 属性 设置为独立 Window(window 不包含在选项卡组中)或 TabGroup 的当前活动实例的字典传递给该方法。在 window 或选项卡组上调用 open() 方法之前创建代理。

Facebook 模块需要挂钩到当前活动的生命周期事件 activity 以便在应用程序中的各种活动之间同步其状态,例如,在用户登录或退出 Facebook。

将代理附加到 Window 或 TabGroup 对象,这样它就不会被垃圾收集。

win.fbProxy = fb.createActivityWorker({lifecycleContainer: win});

Documentation: Facebook module