登录失败。请检查您的网络连接广告再试一次,谷歌玩游戏服务
Posted
技术标签:
【中文标题】登录失败。请检查您的网络连接广告再试一次,谷歌玩游戏服务【英文标题】:failed to sign in . Please check your network connection ad try again , google play game services 【发布时间】:2018-09-15 09:51:22 【问题描述】:这可能是重复的,但我已经尝试了互联网上所有可用的方法来解决这个问题,但到目前为止没有运气,所以再次询问。 我已经在 libGDX 中实现了一个游戏,现在在其中使用 google play 游戏,使用 BaseGameUtils lib 和 google api 方法。但是当我现在开始游戏时,我得到以下错误
我已经检查了以下链接中提供的所有解决方案,但没有任何效果
Failed to sign in. Please check your network connection and try again
我也阅读了相同的故障排除指南,但仍然没有运气。
下面是我的 androidManifext.xml
<?xml version="1.0" encoding="utf-8"?>
package="com.versionpb.game"
android:versionCode="10"
android:versionName="1.6" >
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-sdk tools:overrideLibrary="
com.google.android.gms.ads,
com.google.android.gms.ads.impl,
com.google.android.gms,
android.support.v4,
android.support.compat,
android.support.mediacompat,
android.support.coreutils,
android.support.coreui,
android.support.fragment,
com.google.android.gms.admob.license ,
com.google.android.gms.common.license,
com.google.android.gms.gass,
com.google.android.gms.gass.license,
com.google.android.gms.admob.impl.license,
com.google.example.games.basegameutils,
com.google.android.gms.games,
com.google.android.gms.games.license,
com.google.android.gms.base,
com.google.android.gms.base.license,
com.google.android.gms.tasks,
com.google.android.gms.tasks.license,
com.google.android.gms.drive,
com.google.android.gms.drive.license,
com.google.android.gms.plus,
com.google.android.gms.plus.license,
com.google.android.gms.auth,
com.google.android.gms.auth.license,
com.google.android.gms.auth.api,
com.google.android.gms.auth.api.phone,
com.google.android.gms.auth.api.phone.license
" />
<application
android:allowBackup="true"
android:icon="@mipmap/briskybirdicon"
android:label="@string/app_name"
android:theme="@style/GdxTheme">
<meta-data
android:name="com.google.android.gms.games.APP_ID"
android:value="@string/app_id"/>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
<activity
android:name="com.versionpb.game.AndroidLauncher"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
这是我的 Strings.xml 文件
<?xml version="1.0" encoding="utf-8"?>
<string name="app_name">BriskyBird</string>
<!--
Google Play game services IDs.
Save this file as res/values/games-ids.xml in your project.
-->
<!-- package_name -->
<string name="package_name" translatable="false">com.versionpb.game</string>
</resources>
下面是我的ids.xl
<?xml version="1.0" encoding="utf-8"?>
<resources><!-- app_id -->
<string name="app_id" translatable="false">351XXXX97012</string>
<!-- leaderboard High Score Easy -->
<string name="leaderboard_high_score_easy"
translatable="false">CgkItNrXiJXXXXXXXX</string>
我使用了来自 github repo 下面的 baseGameUtils
https://github.com/ahmetdenizyilmaz/connect
下面是我在核心项目中创建的界面
package com.versionpb.game;
public interface PlayServices
public void signIn();
public void signOut();
public void rateGame();
public void unlockAchievement(String str);
public void submitScore(int highScore);
public void submitLevel(int highLevel);
public void showAchievement();
public void showScore();
public void showLevel();
public boolean isSignedIn();
以下是我在 AndroidLauncher 中的实现方式
package com.versionpb.game;
公共类 AndroidLauncher 扩展 AndroidApplication 实现 PlayServices private static final String TAG = "AndroidLauncher";
private GameHelper gameHelper;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
gameHelper = new GameHelper(this, GameHelper.CLIENT_GAMES);
gameHelper.enableDebugLog(true);
GameHelper.GameHelperListener gameHelperListener = new GameHelper.GameHelperListener()
@Override
public void onSignInFailed()
@Override
public void onSignInSucceeded()
;
RelativeLayout layout = new RelativeLayout(this);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
View gameView = initializeForView(new BriskyBird(this), config);
layout.addView(gameView);
setContentView(layout);
gameHelper.setup(gameHelperListener);
@Override
protected void onStart()
super.onStart();
gameHelper.onStart(this);
@Override
protected void onStop()
super.onStop();
gameHelper.onStop();
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
super.onActivityResult(requestCode, resultCode, data);
gameHelper.onActivityResult(requestCode, resultCode, data);
@Override
public void signIn()
try
runOnUiThread(new Runnable()
@Override
public void run()
System.out.println("PlayServices:Signin In");
gameHelper.beginUserInitiatedSignIn();
);
catch (Exception e)
System.out.println("PlayServices:Signin in Failed");
//Gdx.app.log("MainActivity", "Log in failed: " + e.getMessage() + ".");
@Override
public void signOut()
try
runOnUiThread(new Runnable()
@Override
public void run()
System.out.println("PlayServices:Signin Out");
gameHelper.signOut();
);
catch (Exception e)
//Gdx.app.log("MainActivity", "Log out failed: " + e.getMessage() + ".");
@Override
public void rateGame()
String str = "Your PlayStore Link";
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(str)));
@Override
public void unlockAchievement(String str)
Games.Achievements.unlock(gameHelper.getApiClient(), str);
@Override
public void showAchievement()
if (isSignedIn())
startActivityForResult(Games.Achievements.getAchievementsIntent(gameHelper.getApiClient()), 1);
else
signIn();
@Override
public boolean isSignedIn()
return gameHelper.isSignedIn();
当我使用 GameHelper 过滤时记录 Cat sn-p
04-05 19:22:48.405 15038-15038/? D/GameHelper: GameHelper: Debug log enabled.
04-05 19:22:50.215 15038-15038/? D/GameHelper: GameHelper: Setup: requested clients: 1
04-05 19:22:50.490 15038-15038/? D/GameHelper: GameHelper: onStart :
04-05 19:22:50.490 15038-15038/? D/GameHelper: GameHelper: Connecting
客户端。 04-05 19:22:54.335 15038-15038/? D/GameHelper: GameHelper: onConnectionFailed 04-05 19:22:54.350 15038-15038/? D/GameHelper:GameHelper:连接失败: 04-05 19:22:54.400 15038-15038/? D/GameHelper:GameHelper:- 代码:SIGN_IN_REQUIRED(4) 04-05 19:22:54.400 15038-15038/? D/GameHelper: GameHelper: - 可解析: true 04-05 19:22:54.405 15038-15038/? D/GameHelper: GameHelper: - 详细信息: ConnectionResultstatusCode=SIGN_IN_REQUIRED, resolution=PendingIntent427a9400: android.os.BinderProxy@427b0338, message=null 04-05 19:22:54.410 15038-15038/? D / GameHelper:GameHelper:onConnectionFailed:将解决,因为我们的尝试次数低于最大值,0
错误的 OAuth2 id
04-05 19:22:53.700 6982-6982/? I/Choreographer: Skipped 132 frames! The application may be doing too much work on its main thread.
04-05 19:22:53.725 15233-15233/? E/SELinux: Function: selinux_android_load_priority [0], There is no sepolicy file
04-05 19:22:53.725 15233-15233/? E/SELinux: Function: selinux_android_load_priority [1], There is no sepolicy version file
04-05 19:22:53.725 15233-15233/? E/SELinux: Function: selinux_android_load_priority , loading version is VE=SEPF_GT-I9300_4.3_0016
04-05 19:22:53.725 15233-15233/? E/SELinux: selinux_android_seapp_context_reload: seapp_contexts file is loaded from /seapp_contexts
04-05 19:22:53.795 6982-14330/? I/EventLogSendingHelper: Sending log events.
04-05 19:22:53.845 2639-2639/? D/STATUSBAR-NetworkController: refreshSignalCluster: data=-1 bt=false
04-05 19:22:53.865 2335-3296/? D/s-s-rMv2:Monitor: SIOP:: AP = 310 (read only)
04-05 19:22:53.865 18805-28587/? W/Auth: [GetToken] GetToken failed with status code: UNREGISTERED_ON_API_CONSOLE
04-05 19:22:53.865 2639-2639/? D/STATUSBAR-IconMerger: checkOverflow(384), More:false, Req:false Child:2
04-05 19:22:53.875 26275-10131/? E/TokenRequestor: You have wrong OAuth2 related configurations, please check. Detailed error: UNREGISTERED_ON_API_CONSOLE
04-05 19:22:54.095 2335-2751/? I/ActivityManager: Process com.samsung.android.app.watchmanagerstub (pid 15158) (adj 13) has died.
04-05 19:22:54.100 2335-2829/? I/ActivityManager: Process com.sec.smartcard.pinservice (pid 15180) (adj 11) has died.
04-05 19:22:54.110 2335-2335/? I/ActivityManager: Process com.google.android.gsf.login (pid 15198) (adj 9) has died.
04-05 19:22:54.215 2335-2478/? W/LicenseLogService: log() is called by non admin
04-05 19:22:54.290 15038-15039/? D/dalvikvm: GC_CONCURRENT freed 433K, 15% free 10331K/12048K, paused 19ms+13ms, total 133ms
04-05 19:22:54.335 15038-15038/? D/GameHelper: GameHelper: onConnectionFailed `
但我检查了很多次 SHA1 密钥是正确的,一个在我的游戏 API 中,一个在玩游戏服务中。
任何线索可能是什么问题?
以下是我用来创建游戏服务的步骤
-
我的 1.6 版已更新,可以在 PLay COnsole 中上传我的游戏
打开控制台 --> 游戏服务 --> 添加新游戏
已使用 Tab 我的游戏中还没有使用任何 Google API
输入所有游戏细节等并保存游戏
点击创建链接的应用程序
点击包名,它显示了我的游戏,所以我选择了游戏/正确的包名
没有选择实时多人游戏或反盗版等选项
点击保存
点击授权您的应用
现在这里显示了我的游戏包名称和 SHA1 证书,它再次出现在上传的游戏 SHA 1 包中,当我点击确认时,它显示链接成功并显示 OAuth2 客户端 ID 和应用程序 ID李>
我添加了排行榜:现在只是游戏排行榜名称,然后单击保存。
发布和点击发布游戏及其发布
现在转到排行榜并选择排行榜,单击获取资源,将它们复制并保存在我的 Strings.xml 中,其中包含排行榜和相关代码实现的项目代码更改
在我的手机上执行这一切并得到上述错误。
有什么我做错了吗。我怀疑我可能错过了一些步骤,比如使用 keytool 生成发布证书
keytool -list -keystore
这些步骤在谷歌设置播放 gae 服务的文档中,bt 在我的例子中它显示了正确的 SHA1 证书,所以我没有执行这个命令。
我做错了什么。任何线索
?
现在我尝试使用 keytool -list -keystore
我生成的 SHA1 与在 Play 商店上传的内容不同。
使用哪个 SHA1 灵魂。一个在播放控制台上,一个是 Authorize my app 显示的还是这个生成的?
提前致谢
【问题讨论】:
【参考方案1】:实际上,因为我使用的是在 Play 商店上传的 apk 的 SHA 1,但我正在使用笔记本电脑上的 apk 进行测试,所以我确实需要使用我的密钥库获取 SHA 1,然后创建链接应用程序中应用程序的新 OAuth2 客户端 ID,类似地,我为调试证书创建了另一个客户端。在这些更改之后,我能够登录。以下是解决此问题的再次步骤,我希望它可以在将来对其他人有所帮助。
-
转到命令提示符并执行 cd
再试一下哪个代码,这次它登录了
【讨论】:
这很难理解。你能用图解的方式解释吗?目前存在 1 个用于调试的密钥库和 1 个发布密钥库和密钥别名。还有多少需要,不确定我上面的细节?以及什么是sha1,什么是oauth,它们在哪里使用,它们是如何关联的,从上面很难理解。以上是关于登录失败。请检查您的网络连接广告再试一次,谷歌玩游戏服务的主要内容,如果未能解决你的问题,请参考以下文章
运行MyActivity时出错:Gradle项目同步失败。请修正您的专案,然后再试一次