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

Posted

技术标签:

【中文标题】登录时 SSO facebook 连接插件失败 - 科尔多瓦【英文标题】:SSO facebook connect plugin failure on login - cordova 【发布时间】:2013-03-22 01:03:33 【问题描述】:

好的,我已经搜索了网的所有四个角落......两次......但尚未找到并回答一些我认为必须是小便才能弄清楚但我没有尝试过的东西。这个问题似乎在整个互联网上都出现了,但应用程序仍在与 Facebook 集成开发中,所以为什么我找不到一个翻转的答案!!

不管怎样,我会写下我所做的一切。

    下载了最新的 cordova 并设置了一个项目。 下载了用于 cordova/phonegap 的 facebook connect 插件并添加到我的项目的 hackbook 中 已下载最新的 Java SDK 设置单独的 Facebook SDK 项目 在我的项目中包含了需要 facebook 登录身份验证的单独项目。 添加了 ConnectPlugin.java 文件并将插件调用包含在 config.xml 插件项目中。 登录 facebook,https://developers.facebook.com/apps/ 为自己设置一个应用程序。 给它一个临时名称,并输入一些基本信息。 进入原生 android 应用程序,输入包名 (org.apache.cordova.name) 和类 (org.apache.cordova.name.main) 并确保“facebook 登录”设置为启用。 下载了openSSL(大家都说要下载的那个(我是win8)) 打开命令提示符,导航到 c:\Program Files\Java\jdk1.7.0_17\bin 并运行

keytool -exportcert -alias androiddebugkey -keystore c:\android\debug.keystore | C:\OpenSSL\bin\openssl sha1 -binary | C:\OpenSSL\bin\openssl base64

我从 android sdk 文件夹中复制了调试密钥库,并把它放在了一个较短的路径目录中,因为我很懒。

    在要求时输入了我的密码。 复制类似这样的密钥库 Bmce+9aHdOoVtE7fS3F07tfj7Bc= 并在 facebook android 原生应用详细信息中输入应用详细信息。 在我的项目上按 F5,清理干净,然后通过 Android 虚拟设备运行它。

哇!像美女一样工作

    关闭 AVD,插入我的 SGS3,点击运行。 点击登录,并显示“cordovaExample 想访问您的公开个人资料、好友列表和电子邮件地址” 点击“确定” 应用程序崩溃、死机并炸毁了一头小驴。

谁能告诉我我到底做错了什么。我知道 SSO 有问题,这就是它在 AVD 上工作的原因,因为上面没有安装 facebook,但我创建了愚蠢的哈希键!!!

任何人,我求求你,Facebook 先生,如果你在外面,我做错了什么!!!

谢谢!

编辑

忘记添加日志了:

D/PluginManager(16868):     init()
D/CordovaWebView(16868):    >>> loadUrlNow()
D/DroidGap(16868):          Incoming Result
D/DroidGap(16868):          Request code = 64206
D/DroidGap(16868):          We have a callback to send this result to
D/AndroidRuntime(16868):    Shutting down VM
W/dalvikvm(16868):          threadid=1: thread exiting with uncaught exception (group=0x4111e2a0)
E/AndroidRuntime(16868):    FATAL EXCEPTION: main
E/AndroidRuntime(16868):    java.lang.RuntimeException: Unable to resume activity org.apache.cordova.main/org.apache.cordova.main.main: java.lang.RuntimeException: Failure delivering result ResultInfowho=null, request=64206, result=0, data=Intent  (has extras)  to activity org.apache.cordova.main/org.apache.cordova.main.main: java.lang.NullPointerException
E/AndroidRuntime(16868):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2616)
E/AndroidRuntime(16868):    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2644)
E/AndroidRuntime(16868):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2130)
E/AndroidRuntime(16868):    at android.app.ActivityThread.access$600(ActivityThread.java:140)
E/AndroidRuntime(16868):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
E/AndroidRuntime(16868):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(16868):    at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(16868):    at android.app.ActivityThread.main(ActivityThread.java:4898)
E/AndroidRuntime(16868):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(16868):    at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(16868):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
E/AndroidRuntime(16868):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
E/AndroidRuntime(16868):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(16868):    Caused by: java.lang.RuntimeException: Failure delivering result ResultInfowho=null, request=64206, result=0, data=Intent  (has extras)  to activity org.apache.cordova.main/org.apache.cordova.main.main: java.lang.NullPointerException
E/AndroidRuntime(16868):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3182)
E/AndroidRuntime(16868):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2603)
E/AndroidRuntime(16868):    ... 12 more
E/AndroidRuntime(16868):    Caused by: java.lang.NullPointerException
E/AndroidRuntime(16868):    at org.apache.cordova.DroidGap.onActivityResult(DroidGap.java:849)
E/AndroidRuntime(16868):    at android.app.Activity.dispatchActivityResult(Activity.java:5390)
E/AndroidRuntime(16868):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3178)
E/AndroidRuntime(16868):    ... 13 more
I/GATE(16868):              <GATE-M>DEV_ACTION_COMPLETED</GATE-M>

【问题讨论】:

【参考方案1】:

好吧,如果我从来没有……在这里找到答案:java.lang.RuntimeException: Failure delivering result ResultInfo while logging using Facebook

似乎我在开发人员选项中选中了“不保留活动”,这 oooobbbvioulsy 会导致这种情况......

【讨论】:

【参考方案2】:

据我了解,您生成的密钥仅适用于虚拟设备。要在真机上运行您的应用程序,您必须将应用程序上传到“google play”,并在其中提供一个签名代码,以便您将应用程序从真机连接到 facebook。

希望我对您有所帮助。

【讨论】:

我已导出为 apk,直接从我的机器上传到手机并重新生成了密钥,但我遇到了同样的问题【参考方案3】:

您可以使用此程序http://www.easyfacebookandroidsdk.com/download/keyhash.zip获取您的“签名应用密钥”

在您的 android 开发环境中安装此程序并使用模拟器运行该应用程序。您将获得一个代码,您可以将其插入到“哈希键”facebook 应用程序中。

希望我对您有所帮助。

【讨论】:

以上是关于登录时 SSO facebook 连接插件失败 - 科尔多瓦的主要内容,如果未能解决你的问题,请参考以下文章

Facebook iOS - 在 SSO 上禁止应用程序然后卸载应用程序时出错

在 Facebook IOS SDK 中禁用单点登录 (SSO)

Facebook 单点登录 (SSO) 停止授权现有 iPhone 应用程序

Firebase SSO Auth无法在Facebook中运行在App Browser中

如何使用 facebook ios sdk for iphone 实现单点登录 (SSO)

Facebook SSO IOS 不返回应用