登录失败。请检查您的网络连接广告再试一次,谷歌玩游戏服务

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 ,通常是 C:\Program Files\Java\jdk1.7.0_72\bin 执行以下命令 keytool -list -keystore 应该是一个 .jks 文件,您可能在使用 android studio 生成 apk 时创建了该文件 输出应该是您的证书指纹 (SHA1): ,记下来 使用以下命令生成调试证书 keytool -list -keystore C:\Users\USER.android\debug.keystore 调试证书的密码通常是android 转到链接的应用程序并单击链接另一个应用程序,我假设我们已经链接了 1 个应用程序,即在 Play 商店中的 apk 的 SHA 1 输入你的包名并点击授权应用 它将显示在 Play 商店上传的应用程序的 SHA1,但将其删除并放入您生成的 SHA 1,即步骤 3 的输出 类似地添加另一个链接的应用程序,这次添加您在第 4 步生成的调试 SHA 1 从左侧菜单转到游戏详细信息并向下滚动到 API 控制台项目部分 点击蓝色的项目名称 从左侧菜单中单击密钥,然后单击凭据 现在这里应该有 3 个 OAuth 2.0 客户端 ID,1 个在 Play 商店上传的 apk,1 个您使用密钥库从笔记本电脑生成的 apk,第 3 个是您的调试密钥库

再试一下哪个代码,这次它登录了

【讨论】:

这很难理解。你能用图解的方式解释吗?目前存在 1 个用于调试的密钥库和 1 个发布密钥库和密钥别名。还有多少需要,不确定我上面的细节?以及什么是sha1,什么是oauth,它们在哪里使用,它们是如何关联的,从上面很难理解。

以上是关于登录失败。请检查您的网络连接广告再试一次,谷歌玩游戏服务的主要内容,如果未能解决你的问题,请参考以下文章

运行MyActivity时出错:Gradle项目同步失败。请修正您的专案,然后再试一次

Paypal 沙箱登录错误:您的某些信息不正确。请再试一次

AppStore下载失败使用已购页面再试一次解决方法

PHPMailer Gmail 登录失败

我的MacBook下载东西的时候为啥会出现“下载XXXX失败使用已购页面再试一次”可是我到已购页

MAC下载软件为何无法安装?提示“下载失败,使用已购页面再试一次”