Google登录不适用于从Playstore下载的应用

时间:2017-11-04 04:12:10

标签: android react-native google-signin android-app-signing app-signing

  1. 创建了一个使用react-native-google-signin通过google login
  2. 登录应用的应用
  3. 创建了一个用于签署我的应用的密钥库,如here
  4. 所述
  5. 签名我的应用并上传到Google Playstore
    • 当我被问到是否要加入Google Play App Signing时,我同意
  6. 如果我尝试登录我的应用程序(从Play商店下载),我收到错误messsage: DEVELOPER_ERRORerror code: 10
  7.   

    注意1:我的应用不使用firebase

         

    注意2:如果我将apk直接安装到我的设备中,登录似乎可以正常工作

    我确定问题与使用Google Play App Signing签署应用程序的方式有关,但我无法隔离问题

    更新

    • here下载google-services.json并将其添加到/android/app下,如果我从发布管理页面下载并手动安装,该应用现在可以正常运行。如果我直接从Google Play商店安装它仍然无效。

4 个答案:

答案 0 :(得分:5)

解决方案:

  • 问题在于,在生成google-services.json时,需要提供App signing certificate SHA-1 certificate fingerprint;我提供了Upload certificate的{​​{1}},这就是为什么它不能用于制作。
  • 从本质上讲,在credentials page中,您需要为Android创建两个oauth客户端ID(一个包含SHA-1 certificate fingerprint,另一个包含App Signing certificate和一个oauth客户端ID类型为Upload certificate且在使用web时,您需要指定react-native-google-signin

答案 1 :(得分:3)

这非常简单,请转到播放商店帐户,在该帐户中上传已签名的APK。选择您的应用,然后转到发布管理部分,然后应用签名

复制App Signing证书的SHA1密钥。

转到此链接https://developers.google.com/identity/sign-in/android/start-integrating

点击配置项目按钮

选择您的应用,选择Android,应用您的应用包名称,然后粘贴SHA1证书

然后单击创建。就是这样。

现在您可以在应用中使用Google登录

答案 2 :(得分:1)

您在调试模式下为应用添加了sha-1密钥,此时您将可以在应用中使用Google登录。 但随着应用程序投入生产,它需要sha-1密钥才能生产。 而且你需要在firebase控制台上添加。 您可以检查您的firebase控制台并检查Android应用程序。

#include <array>
#include <iostream>

template <std::size_t ...>
struct indexSequence
 { };

template <std::size_t N, std::size_t ... Next>
struct indexSequenceHelper : public indexSequenceHelper<N-1U, N-1U, Next...>
 { };

template <std::size_t ... Next>
struct indexSequenceHelper<0U, Next ... >
 { using type = indexSequence<Next ... >; };

template <std::size_t N>
using makeIndexSequence = typename indexSequenceHelper<N>::type;


template <std::size_t N>
struct foo
 {
   std::array<int, N> arr;

   template <std::size_t I>
   int & bit ()
    { return arr[I]; }
 };


template <std::size_t Sh, typename T, std::size_t ... Is>
void shiftValHelper (T & t, indexSequence<Is...> const &)
 {
   using unused = int[];

   (void)unused { 0,
      (t.template bit<Is+Sh>() = t.template bit<Is>(), 0)... };
 }


template <std::size_t Sh, std::size_t N, typename T>
void shiftVal (T & t)
 { shiftValHelper<Sh>(t, makeIndexSequence<N>{}); }


int main ()
 {
   foo<10U>  f { { { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 } } };

   for ( auto const & i : f.arr )
      std::cout << i << ' ';

   std::cout << std::endl;

   shiftVal<2, 10-2>(f);

   for ( auto const & i : f.arr )
      std::cout << i << ' ';

   std::cout << std::endl;
 }

上面的commad有助于为调试版创建sha-1密钥。

您需要为生产sha-1提供已签名的密钥库文件路径。  这将通过命令

完成
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android 

您只需要为已发布的apk提供密钥库文件的特定路径。

答案 3 :(得分:1)

昨天我也遇到了同样的问题。

Google在Playstore发布控制台中发布了一项新的签名服务,其中Google会使用其密钥库登录您的应用。签名后,它将为您提供一个新的SHA,您必须将其添加到您的fire enter image description here基本帐户中。看到图片以获得更好的理解