Phonegap 构建 - Facebook 连接插件 - 无效的 android_key 参数错误

Posted

技术标签:

【中文标题】Phonegap 构建 - Facebook 连接插件 - 无效的 android_key 参数错误【英文标题】:Phonegap build - Facebook connect plugin - Invalid android_key parameter error 【发布时间】:2014-03-22 10:12:00 【问题描述】:

我正在通过 phonegap build 运行示例代码(见下文)以生成一个 android apk。

https://github.com/phonegap-build/FacebookConnect/blob/master/example/Simple/index.html

当我尝试通过 Android 设备上的应用程序(安装了 facebook 应用程序)登录 facebook 时,我收到此错误:

无效的 android_key 参数 J4INwYsuTyQ_LJc1d3WZ2HReg7M 不匹配任何允许的 android 密钥。在http://developers.facebook.com/apps/'app id' 处配置您的应用密钥哈希

我已将此密钥复制粘贴到我的应用程序的 android 设置的密钥哈希部分,但当我尝试使用该应用程序登录时它仍然抛出相同的错误。

如何让这个应用成功登录facebook?

或者:还有什么方法可以让安卓应用使用 phonegap 登录 facebook?

以下是我做过的一些事情:

在我的 Facebook 应用设置中:

将“包名称”设置为在我的 phonegap config.xml 中找到的“小部件 ID”。 将“类名”设置为包名并附加“.ProjectActivity”。 启用“单点登录”并禁用“深度链接”。 向公众开放应用程序(通过“状态和审查”部分。

在我的 phonegap config.xml 中(在 phonegap 项目的 /www 目录中找到):

输入 APP_ID 作为在我的 facebook 应用仪表板中找到的 ID 在我的 Facebook 应用设置中输入 APP_NAME 作为“命名空间”

在我的 phonegap 构建应用设置中:

制作了一个密钥库(使用这个答案:https://***.com/a/19315975/1696114)并用它来生成一个发布 apk。

【问题讨论】:

【参考方案1】:

我认为您应该使用 facebook phonegap 插件作为您的身份验证。

下载并安装到您的 cordova 项目中。

https://github.com/phonegap/phonegap-facebook-plugin

使用此命令进行安装。

cordova plugin add https://github.com/phonegap/phonegap-facebook-plugin.git --variable APP_ID="xxxxxxxxxxxxx" --variable APP_NAME=“xxxxxxxx”

然后在此处设置您的 Facebook 应用程序:

http://developers.facebook.com/apps/

然后确保你的项目中有这个脚本。

cdv-plugin-fb-connect.js
facebook-js-sdk.js

之后,将此代码粘贴到您的主脚本中

if ((typeof cordova == 'undefined') && (typeof Cordova == 'undefined')) alert('Cordova variable does not exist. Check that you have included cordova.js correctly');
if (typeof CDV == 'undefined') alert('CDV variable does not exist. Check that you have included cdv-plugin-fb-connect.js correctly');
if (typeof FB == 'undefined') alert('FB variable does not exist. Check that you have included the Facebook JS SDK file.');
FB.Event.subscribe('auth.login', function(response) 
    //alert('auth.login event');
);
FB.Event.subscribe('auth.logout', function(response) 
    //alert('auth.logout event');
);
FB.Event.subscribe('auth.sessionChange', function(response) 
    //alert('auth.sessionChange event');
);
FB.Event.subscribe('auth.statusChange', function(response) 
    //alert('auth.statusChange event');
);

function getSession() 
    alert("session: " + JSON.stringify(FB.getSession()));


function getLoginStatus() 
    FB.getLoginStatus(function(response) 
        if (response.status == 'connected') 
            alert('logged in');
         else 
            alert('not logged in');
        
    );

var friendIDs = [];
var fdata;

function logout() 
    FB.logout(function(response) 
        alert('logged out');
        window.location.replace("#login");
    );


function login() 
    FB.login(

    function(response) 
        if (response.authResponse) 
            alert('logged in');
            FB.api('/me', function(me) 
                if (me.id) 
                                    localStorage.id = me.id;
                    localStorage.email = me.email;
                    localStorage.name = me.name;
                    window.location.replace("#home");
                
                else 
                    alert('No Internet Connection. Click OK to exit app');
                    navigator.app.exitApp();
                
            );
         else 
            alert('not logged in');
        
    , 
        scope: "email"
    );


document.addEventListener('deviceready', function() 
    try 
        //alert('Device is ready! Make sure you set your app_id below this alert.');
        FB.init(
            appId: "appid",
            nativeInterface: CDV.FB,
            useCachedDialogs: false
        );
        document.getElementById('data').innerHTML = "";
     catch (e) 
        alert(e);
    
, false);

使用login() 登录。尽情享受吧!

【讨论】:

您建议使用的代码似乎与插件 github 页面上的示例非常相似,除了缺少一些内容,这将使其像对 cordova.js 文件的引用和带有 class="data" 的 div。【参考方案2】:

我通过使用 phonegap-facebook-plugin 并在本地构建我的 cordova/phonegap 项目成功地制作了一个可以登录 facebook 的应用程序。

我创建了一个新的 cordova 项目并为该项目添加了 android 平台,按照此处的说明进行操作:http://docs.phonegap.com/en/3.4.0/guide_overview_index.md.html#Overview

在执行此操作时,我发现我无意中使用了较旧的 cordova 版本 (3.1) 制作了我以前的项目,并且我没有安装 cordova 命令行界面。我制作第一个项目的方式可能还有其他问题。

然后我添加了在此处找到的 phonegap-facebook-plugin:https://github.com/phonegap/phonegap-facebook-plugin 使用此命令(来自我的项目位置):

    cordova plugin add https://github.com/phonegap/phonegap-facebook-plugin.git --variable       APP_ID="xxxxxxxxxxxxx" --variable APP_NAME=“xxxxxxxx”

(将 APP_ID 值替换为我的 facebook 应用程序 ID,将 APP_NAME 值替换为我的应用程序的命名空间)。

然后,我将 index.html 替换为 phonegap-facebook-plugin github 页面 + /blob/master/example/Simple/index.html 中的示例索引文件(将 app_id 值替换为我的应用程序 ID)。

然后我将应用程序直接运行到我的安卓设备上:

    cordova run android

在这个应用程序中,我可以使用示例提供的界面登录、发布到我自己或朋友的墙等。使用这个新项目(更新了 cordova 版本)我可以使用 phonegap build但我还没试过。

感谢 Dato' Mohammad Nurdin 提出使用此插件的建议。

【讨论】:

其实我用了同样的步骤,但我失败了,你能把eclipse项目分享给我吗

以上是关于Phonegap 构建 - Facebook 连接插件 - 无效的 android_key 参数错误的主要内容,如果未能解决你的问题,请参考以下文章

facebook 连接 + Phonegap

Facebook 连接 + Phonegap 3

Cordova / Phonegap 应用程序 - 更改 Facebook 帐户

Facebook 插件不适用于 phonegap 构建

PhoneGap 上 Facebook 登录的哈希键 构建和 PhoneGap 混合应用程序的 OAuth URL Facebook 登录

Phonegap 在前 2 次加载时构建 Facebook 插件异常