我的应用程序中有Google登录功能。我们正在使用“mm”或“make”命令从构建系统构建apk,我在Android.mk中包含了谷歌登录所需的必要jar。
现在我的问题是如果我需要oauth令牌错误,我无法使用Google登录 statusCode =未知状态代码:12501,resolution = null
String serverClientId = getString(R.string.server_client_id);
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(
GoogleSignInOptions.DEFAULT_SIGN_IN).requestServerAuthCode(
serverClientId).build();
// Build a GoogleApiClient with access to the Google Sign-In API and the
// options specified by gso.
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso).build();
其中serverClientId是google开发者控制台后返回的webapplication id
我正在使用上面的代码。如果我使用Scope,我可以成功登录,但没有oauth令牌。
如果我使用相同的代码并在Android Studio中运行,我可以登录,因为它有google_service.json文件,因此gradle选择并构建apk。
所以在我的情况下有任何一个尝试通过构建apk从构建系统登录谷歌登录,我的假设是我们需要将谷歌服务json文件链接到Android.mk
答案 0 :(得分:0)
替换
的getString(R.string.server_client_id);
带
。AuthenticatedActivity.this.getResources()的getString(R.string.server_client_id);
答案 1 :(得分:0)
我的解决方案是卸载并重新安装Google+,之后一切正常。
答案 2 :(得分:0)
三天后,我得到了解决方案。为什么它与Android Studio一起工作,apk将在构建时使用调试密钥签名。从构建系统开始,它没有使用调试密钥签名。所以我现在正在做的是在" mm"之后生成后用调试密钥库对apk进行签名。命令。我们还需要在Google帐户中使用MD5(SHA1)。
1. zip -d <APK> "META-INF*"
2. jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <path to keystore>/debug.keystore <APK> keyalas
passwords:
android
3. <path to zipalign>/zipalign -v 4 <APK in> <APK out>