使用cordova登录Google无法正常工作。 Android中的错误10和IOS中的错误请求

时间:2017-09-11 15:28:00

标签: javascript macos cordova authentication google-api

我有一个使用cordova构建的Android / IOS应用程序。

由于我现在正在使用ssl运行服务器,因此无法通过inappBrowser打开来自Google的请求。所以我必须使用带有this插件的本机登录。 (这是我发现的最可靠的)

阅读了很多帖子(thisthis..)后,我认为问题就在于我(尝试)生成密钥文件的方式

keytool -exportcert -keystore ~/.android/debug.keystore -list -v -alias myAppName

(空密码)提示

error de herramienta de claves: java.lang.Exception: El alias <myAppName> no existe (doesn't exist)
java.lang.Exception: El alias <myAppName> no existe
    at sun.security.tools.keytool.Main.doPrintEntry(Main.java:1738)
    at sun.security.tools.keytool.Main.doCommands(Main.java:1064)
    at sun.security.tools.keytool.Main.run(Main.java:343)
    at sun.security.tools.keytool.Main.main(Main.java:336)

这是否意味着它没有用?

关于错误:

window.plugins.googleplus.login(
    {
      'scopes': 'profile email', 
      'webClientId': 'xxxxxxxxx.apps.googleusercontent.com', 
      'offline': true, 
    },
    function (obj) {
      alert(JSON.stringify(obj)); /
    },
    function (msg) {
      alert('error: ' + msg); // <--- It alerts 'error: 10'
    }
);

enter image description here

任何提示都会非常受欢迎

-EDIT(现已解决) -

刚刚在IOS(模拟器)中测试过,结果更糟: enter image description here

-EDIT 2 -

我试图以两种方式安装它(相同的结果)

  • cordova plugin add cordova-plugin-googleplus --save --variable REVERSED_CLIENT_ID=myreversedclientid
  • cordova plugin add https://github.com/EddyVerbruggen/cordova-plugin-googleplus --save --variable REVERSED_CLIENT_ID=myreversedclientid

(多次,在#34之前和之后;设置&#34; .key)

-EDIT 3 -

BTW,这个错误是什么意思? (无法找到它)

2 个答案:

答案 0 :(得分:2)

对我来说错误10发生在keytool生成的SHA1(我用来将应用程序添加到google)与build apk的sha不匹配时。我修复的方法是将google项目的SHA1编辑为build apks SHA1

1 - 首先,构建apk

cordova build android --device --verbose --stacktrace --debug

2 - 查看apk的路径。它将在projectfolder / platforms / outputs / apk / android-debug.apk

3 - 获取apk的SHA1

keytool -list -printcert -jarfile <path to your apk>

它将输出包含SHA1的详细信息。复制此项并替换google项目应用程序中的SHA1。

4 - 转到firebase控制台打开应用程序编辑SHA1。复制构建apk的SHA1以替换我们在创建应用程序时最初粘贴的先前SHA1。

答案 1 :(得分:1)

  

我似乎找不到GoogleService-Info.plist文件。应该在哪个文件夹中?

由于我们谈论iOS,我认为GoogleService-Info.plist文件丢失,这是一个问题。请查看此EddyVerbruggen/cordova-plugin-googleplus

  

要获取iOS REVERSED_CLIENT_ID,请在此处生成配置文件。此GoogleService-Info.plist文件包含安装期间您需要的REVERSED_CLIENT_ID。此值仅适用于iOS。

     

REVERSED_CLIENT_ID在Developer's Console上也称为“iOS URL Scheme”。

     

登录iOS会通过Google SDK将用户带到SafariViewController,而不是单独的Safari浏览器。

要生成配置文件,请转至:https://developers.google.com/mobile/add?platform=ios

在iOS项目的根目录中找到此文件

在我的情况下,GoogleService-Info.plist文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CLIENT_ID</key>
    <string>18643434937-j6ofvkktk1uklqjv61ecr75f1llqki0f.apps.googleusercontent.com</string>
    <key>REVERSED_CLIENT_ID</key>
    <string>com.googleusercontent.apps.18643434937-j6ofvkktk1uklqjv61ecr75f1llqki0f</string>
    <key>PLIST_VERSION</key>
    <string>1</string>
    <key>BUNDLE_ID</key>
    <string>com.app.client</string>
    <key>PROJECT_ID</key>
    <string>app-c6c82</string>
    <key>IS_ADS_ENABLED</key>
    <false/>
    <key>IS_ANALYTICS_ENABLED</key>
    <false/>
    <key>IS_APPINVITE_ENABLED</key>
    <false/>
    <key>IS_GCM_ENABLED</key>
    <false/>
    <key>IS_SIGNIN_ENABLED</key>
    <true/>
    <key>GOOGLE_APP_ID</key>
    <string>1:68743434937:ios:b03bcd3b3f571a56</string>
</dict>
</plist>

对于Android google-services.json

转到:https://developers.google.com/mobile/add?platform=android

并在那里生成。

应该看起来像:

{
  "project_info": {
    "project_number": "68643434935",
    "project_id": "myapp-c6c82"
  },
  "client": [
    {
      "client_info": {
        "mobilesdk_app_id": "1:68643434935:android:71bc3a4035ab9002",
        "android_client_info": {
          "package_name": "com.agan.armoa"
        }
      },
      "oauth_client": [
        {
          "client_id": "68643434935-mqm5s8lubfr5j5s3bj62eigbod0h083s.apps.googleusercontent.com",
          "client_type": 1,
          "android_info": {
            "package_name": "com.agan.armoa",
            "certificate_hash": "759A66458E30A70628F2E6A66C46240E21676B72"
          }
        },
        {
          "client_id": "68643434935-bc48465luu0r77tufpf4fumv0bd5pta2.apps.googleusercontent.com",
          "client_type": 3
        },
        {
          "client_id": "68643434935-gpdj67581deilm3refkgobuvneceisqt.apps.googleusercontent.com",
          "client_type": 3
        }
      ],
      "api_key": [
        {
          "current_key": "AIzaSyDB6g1-nMbZ9aZkic2dCz8QrcqHfCSDrsw"
        }
      ],
      "services": {
        "analytics_service": {
          "status": 1
        },
        "appinvite_service": {
          "status": 1,
          "other_platform_oauth_client": []
        },
        "ads_service": {
          "status": 1
        }
      }
    },
    {
      "client_info": {
        "mobilesdk_app_id": "1:68643434935:android:b03bcd3b3f571a56",
        "android_client_info": {
          "package_name": "com.myapp.client"
        }
      },
      "oauth_client": [
        {
          "client_id": "68643434935-25ciu2gccfv70m08sc7c4fr3v0gqe89m.apps.googleusercontent.com",
          "client_type": 1,
          "android_info": {
            "package_name": "com.myapp.client",
            "certificate_hash": "E90A75A9AA4470337AE5ECD87C3416DDB1109BE1"
          }
        },
        {
          "client_id": "68643434935-bc48465luu0r77tufpf4fumv0bd5pta2.apps.googleusercontent.com",
          "client_type": 3
        },
        {
          "client_id": "68643434935-gpdj67581deilm3refkgobuvneceisqt.apps.googleusercontent.com",
          "client_type": 3
        }
      ],
      "api_key": [
        {
          "current_key": "AIzaSyDB6g1-nMbZ9aZkic2dCz8QrcqHfCSDrsw"
        }
      ],
      "services": {
        "analytics_service": {
          "status": 1
        },
        "appinvite_service": {
          "status": 1,
          "other_platform_oauth_client": []
        },
        "ads_service": {
          "status": 1
        }
      }
    }
  ],
  "configuration_version": "1"
}

[编辑2]

关于您的错误:

  

keytool -exportcert -list -v \ -alias project -keystore~ / .android / debug.keystore我收到此错误:error de herramienta de claves:java.lang.Exception:El archivodealmacéndeclaves no existe: /Users/toni/.android/debug.keystore java.lang.Exception:El archivodealmacéndeclaves no existe:/Users/toni/.android/debug.keystore

尝试运行:

keytool -genkey -v -keystore ~/.android/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"

生成~/.android/debug.keystore

另请查看:https://developer.android.com/studio/publish/index.html#debugmode

[编辑3]

error 10表示:

  

public static final int DEVELOPER_ERROR

     

应用程序配置错误。此错误无法恢复   将被视为致命的。开发人员应该查看之后的日志   这可以确定更多可操作的信息。

     

常数值:10

请参阅DOCS和类似的错误解决方案:Error: Status{statusCode=DEVELOPER_ERROR, resolution=null}