科尔多瓦 3.3. iOS 的 Facebook 集成

Posted

技术标签:

【中文标题】科尔多瓦 3.3. iOS 的 Facebook 集成【英文标题】:cordova 3.3. facebook integration for iOS 【发布时间】:2014-04-08 12:18:30 【问题描述】:

错误:

2014 - 04 - 08 17: 38: 33.210 javacourseblog[10129: 907] ERROR: Plugin 'org.apache.cordova.facebook.Connect'
not found,
or is not a CDVPlugin.Check your plugin mapping in config.xml.
2014 - 04 - 08 17: 38: 33.211 javacourseblog[10129: 907] - [CDVCommandQueue executePending][Line 158] FAILED pluginJSON = ["org.apache.cordova.facebook.Connect1333284177", "org.apache.cordova.facebook.Connect", "login", ["email"]]

这是我的错误;

我尝试使用 cordova 登录和注销 Facebook

我关注了这个下面的博客页面。

http://javacourseblog.blogspot.in/2014/01/facebook-login-logout-using-cordova-330.html

android facebook 登录工作正常。但是ios构建它显示上面的错误。我跟着

Phonegap 3.0 IOS plugins not found

它也对我没有帮助..请任何人都可以帮助...

【问题讨论】:

【参考方案1】:

第 1 步: 通过 telnet 创建 cordova 项目:

cordova create facebook in.com.fb Facebook

第 2 步: 添加 facebook cordova 插件

cordova plugin add https://github.com/phonegap/phonegap-facebook-plugin.git

第 3 步: 删除并添加 fb id 和应用程序名称。从

打开 plugin.xml 文件
  find and remove below 2 line

 after to add this 2 line 

第 4 步 为 android 或 ios 添加您的平台 科尔多瓦平台添加ios 第 5 步 1.现在在您的 www 文件夹中引用 cordova.js 、cdv-plugin-fb-connect.js 和 facebook-js-sdk.js 2.删除旧代码表单 index.html.add follwoing 代码查找替换 index.html 中的 fb 应用程序 ID '

<!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <meta name="format-detection" content="telephone=no" />
            <!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->
            <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
            <link rel="stylesheet" type="text/css" href="css/index.css" />
            <title>Hello World</title>
        </head>
        <body>
            <div class="app">
                <h1>Apache Cordova</h1>
                <div id="deviceready" class="blink">
                    <p class="event listening">Connecting to Device</p>
                    <p class="event received">Device is Ready</p>
                </div>
            </div>
            <script type="text/javascript" src="cordova.js"></script>
            <script type="text/javascript" src="js/index.js"></script>
            <script type="text/javascript" charset="utf-8" src="cdv-plugin-fb-connect.js"></script>
            <script type="text/javascript" charset="utf-8" src="facebook_js_sdk.js"></script>


            <div id="data">Hello Facebooktesters, loading ...</div>

        <button onclick="login()">Login</button>
        <button onclick="me()">Me</button>

        <script type="text/javascript">
            document.addEventListener('deviceready', function() 
                try 
                    alert('Device is ready! Make sure you set your app_id below this alert.');
                    FB.init(
                        appId : "Your fb Id",
                        nativeInterface : CDV.FB,
                        useCachedDialogs : false
                    );
                    document.getElementById('data').innerHTML = "FB init executed";
                 catch (e) 
                    alert(e);
                
            , false);

            function me() 
                FB.api('/me/friends', 
                    fields : 'id, name, picture'
                , function(response) 
                    if (response.error) 
                        alert(JSON.stringify(response.error));
                     else 
                        var data = document.getElementById('data');
                        fdata = response.data;
                        console.log("fdata: " + fdata);
                        response.data.forEach(function(item) 
                            var d = document.createElement('div');
                            d.innerHTML = "<img src="+item.picture+"/>" + item.name;
                            data.appendChild(d);
                        );
                    
                    var friends = response.data;
                    console.log(friends.length);
                    for ( var k = 0; k < friends.length && k < 200; k++) 
                        var friend = friends[k];
                        var index = 1;

                        friendIDs[k] = friend.id;
                        //friendsInfo[k] = friend;
                    
                    console.log("friendId's: " + friendIDs);
                );
            

            function login() 
                FB.login(function(response) 
                    if (response.authResponse) 
                        alert('logged in');
                     else 
                        alert('not logged in');
                    
                , 
                    scope : "email"
                );
            
        </script>
         <!-- <script type="text/javascript">
                app.initialize();
            </script> -->
        </body>
    </html>'

第 6 步: 在 xcode 中打开您的项目并打开 ios plist 文件并添加您的 fb appid 和 fb app_name 第 7 步 去你的codova config.xml.find下面这条线是否退出..如果没有退出(ios)添加到步骤..

<feature name="org.apache.cordova.facebook.Connect">
        <param name="ios-package" value="FacebookConnectPlugin" />
    </feature>

第 8 步

cordova 构建

第 9 步 再次检查 plist 文件 第 10 步 运行你的 ios 模拟器

【讨论】:

【参考方案2】:

确保以正确的方式安装您的 facebook phonegap 插件。不要使用plugman。

cordova plugin add https://github.com/phonegap/phonegap-facebook-plugin --variable APP_ID="xxxxxxxxxxxxxxx" --variable APP_NAME=“YourAppName”

【讨论】:

是..我安装了正确的方式...感谢重播..我找到了解决方案...它的配置问题。我整理出来了。现在它在 ios 中为我工作。

以上是关于科尔多瓦 3.3. iOS 的 Facebook 集成的主要内容,如果未能解决你的问题,请参考以下文章

带有 facebook/gmail 的 OAuth 不适用于 iOS 模拟器(Cordova 应用程序 + Firebase)

科尔多瓦:android 4.1 中的 facebook 登录错误“为 facebook 登录配置错误”

在科尔多瓦/网络/混合应用程序中登录 Facebook 的最佳解决方案是啥?

Phonegap 科尔多瓦 2.3.0 phonegap-facebook-plugin

如何在我的科尔多瓦应用程序中为 Facebook 页面点赞?

登录时 SSO facebook 连接插件失败 - 科尔多瓦