Android 钛-Facebook模块没有';t使用本机登录

Android 钛-Facebook模块没有';t使用本机登录,android,titanium,titanium-mobile,facebook-login,titanium-alloy,Android,Titanium,Titanium Mobile,Facebook Login,Titanium Alloy,我正在尝试将facebook登录到我试图用Tianium开发的应用程序中, 当我点击“连接”按钮时,它会显示一个如下对话框: 它看起来像一个facebook登录的web应用程序,而不是本机应有的样子。我希望它是这样的: 那么,如何让本模块使用本机登录对话框而不是此web样式对话框?要使用iOS本机facebook登录,您必须: 使用新的facebook模块require('facebook'),旧模块已弃用 设置forceDialogAuth=false 确保在facebook应用程序中也设

我正在尝试将facebook登录到我试图用Tianium开发的应用程序中, 当我点击“连接”按钮时,它会显示一个如下对话框:

它看起来像一个facebook登录的web应用程序,而不是本机应有的样子。我希望它是这样的:


那么,如何让本模块使用本机登录对话框而不是此web样式对话框?

要使用iOS本机facebook登录,您必须:

  • 使用新的facebook模块
    require('facebook')
    ,旧模块已弃用
  • 设置
    forceDialogAuth=false
  • 确保在facebook应用程序中也设置了应用程序的捆绑id
  • 在tiapp.xml中设置facebook应用程序id
  • 将Info.plist移到应用程序的根文件夹中,并在那里提供facebook id和url方案(使用新的SDK,您可以在tiapp.xml中执行此操作,稍后我将在这里给出一些示例)
  • 您发布的图像是备用解决方案,如果

    • 用户尚未在设备上激活facebook登录/facebok应用程序
    • 用户在本机facebook登录之前拥有iOS版本
    • 您可以在模拟器中运行应用程序


    这是我如何使用本机iOS登录的,一步一步:

    1。创建facebook应用程序
    要使用本机iOS facebook登录,您必须在创建facebook应用程序。将你的应用程序id复制到文本编辑器,我们稍后将需要它。

    2。设置你的facebook应用程序
    在“基础”部分启用“本机iOS应用程序”集成。

    (1) 输入应用程序使用的捆绑包id,与您在tiapp.xml中设置的id相同
    (2) 如果您希望Facebook从书签等启动您的应用程序,请激活Facebook登录。
    (3) 可选:用于跨多个应用程序共享您的facebook id。我们也将在Info.plist中使用此url方案。

    3。设置tiapp.xml
    转到Titanium Studio并打开tiapp.xml(通常是应用程序目录中的最后一个文件)。左下角有两个选项卡。我们首先需要概述。确保您的应用程序Id与您在facebook应用程序中输入的Id匹配。单击模块的+并添加Appcelerators自己的facebook模块,默认情况下安装该模块。它应该出现在下面的列表中。
    仍然在tiapp.xml中,单击tiapp.xml选项卡,添加以下内容:
    XXXXXXXX

    ,显然,Xs是您的facebook应用程序id。

    4。复制并编辑Info.plist文件
    在Finder中,导航到应用程序根文件夹。从这里开始,进入build>iphone。你应该在这里看到Info.plist。将其复制并粘贴到应用程序的根文件夹。
    使用您选择的文本编辑器打开它。将FacebookAppID和FacebookDisplayName添加到文件中,并用自己的占位符值替换占位符值。这可能没有必要,但为了安全起见,我使用了它,而且它很有效;)查找CbundleUrlTypes并将其编辑为如下所示,测试是您应用程序的URL方案,您以前在facebook应用程序中设置过它。通过输入
    test://
    ,您的应用程序也可以从Safari打开。请注意CbundleurlSchemes数组中的fb,与之前的所有其他字段不同,它必须在您的facebook应用程序id前面加前缀

    <key>FacebookAppID</key>
    <string>XXXXXXXXXXXXX</string>
    <key>FacebookDisplayName</key>
    <string>Your facebook app name</string>
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string>test</string>
            <key>CFBundleURLSchemes</key>
            <array>
                  <string>test</string>
                  <string>fbXXXXXXXXXX</string>
            </array>
        </dict>
    </array>
    

    请提供您现有的代码,有时一个问题可以通过更改一行来解决,如果我们只知道…谢谢,真的帮助了我:)@mwfire Clear one great
    // The module we have added to our project via tiapp.xml before
    var facebookModule = require('facebook');
    // We can read the facebook app id from tiapp.xml
    var FACEBOOK_APP_ID = Ti.App.Properties.getString('ti.facebook.appid');
    // Set the app id
    facebookModule.appid = FACEBOOK_APP_ID;
    // Do not force a facebook html popover but use the native dialog if possible
    facebookModule.forceDialogAuth = false;
    // Add an event listener to the facebook login event
    facebookModule.addEventListener('login', facebookLoginHandler);
    // Also add an event listener to the logout event
    facebookModule.addEventListener('logout', facebookLogoutHandler);
    
    // The event listener of our login button
    loginButton.addEventListener('click', function() {
        facebookModule.authorize();
    });
    
    // The event listener of our logout button
    logoutButton.addEventListener('click', function() {
        facebookModule.logout();
    });
    
    // The facebook login event handler
    function facebookLoginHandler(e) {
        if (e.success) {
            // Success!
        } else if (e.error) {
            // Error!
        } else if (e.cancelled) {
            // cancelled by user
        }
    }
    
    // The facebook logout handler
    function facebookLogoutHandler(e) {
        if (e.success) {
            // Success, clear the facebook browser cookies so someone else
            // can login later, if the browser fallback is used
            var client = Titanium.Network.createHTTPClient();
            client.clearCookies('https://login.facebook.com');
        } else if (e.error) {
            // Error!
        } 
    }