Android上Meteor.loginWithGoogle错误10

Quy*_*ham 6 android meteor meteor-accounts

我使用下面的功能Meteor.loginWithGoogle来登录google。它可以在浏览器上运行,但是当我构建为apk时(cordova)它失败了(控制台日志是错误10)。

handleLoginError(err, service) {
   console.error(err);
}

Meteor.loginWithGoogle({}, (err) => {
  if (err) {
    this.handleLoginError(err, 'google');
  } else {
    this.handleLoginSuccess();
  }
});
Run Code Online (Sandbox Code Playgroud)

Mar*_*lar 4

刚刚在https://forum.ionicframework.com/t/google-login-error-10/93230/4上找到了解决方案

就您而言,Cordova 未正确签署您的 APK。这就是为什么错误只发生在apk中。您可以通过创建一个有效的密钥库来解决此问题,Cordova 可以使用该密钥库对 apk 进行签名。


选项1

您可以使用以下命令创建密钥库:keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 确保根据您的需要对其进行编辑。如果你想了解更多关于这个命令的信息,可以阅读这个答案

接下来,您需要使用以下命令从刚刚生成的密钥中获取 SHA1:keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

您可以使用此 SHA1 从https://developers.google.com/mobile/add?platform=android&cntapi=signin获取您的令牌、ID 和密钥

使用该命令meteor build android --release构建您的应用程序并生成 apk 文件。

最后,您可以使用该命令jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore HelloWorld-release-unsigned.apk alias_name使用密钥库对生成的 apk 文件进行 jar 签名。


选项2

或者,您可以创建一个包含密钥库文件和密码的签名属性文件,platforms/android/debug-signing.properties如下所示。例子:

keyAlias=yourkeyAlias
keyPassword=yourkeyPassword
storeFile=theFileContainingTheKeystore
storePassword=yourStorePassword
Run Code Online (Sandbox Code Playgroud)

您可以在发布文档中获取有关此内容的更多信息:https ://ionicframework.com/docs/v1/guide/publishing.html