Java 登录失败。请检查您的网络连接,然后重试
我试图用谷歌游戏服务制作简单的游戏,但我没能登录谷歌游戏 我得到这个错误: 登录失败。请检查您的网络连接,然后重试。 我有MainActivity和三个fragmenet(MainFragment、GameFragment和ResultFragment) MainFragment是主菜单的片段,在主菜单中使用have按钮单击开始游戏 授权? 我已经在Google Play开发者控制台中链接并授权我的游戏与SHA-1 当我使用Android Studio时,我的软件包名称看起来像:aplikacijezaandroid.thebuttonchallenge,我在Google Play开发者控制台上的链接应用程序中添加了两个应用程序版本 所以我有com.aplikacijezaandroid.thebuttonchallenge和aplikacijezaandroid.thebuttonchallenge 应用程序ID? 我将应用程序id和排行榜id添加到strings.xml中,并将meta标记添加到Android清单中 我已在AndroidManifest.xml中添加了Internet权限 测试? 我使用物理设备和ofc从Android Studio测试和调试应用程序。在Google Play开发者控制台中添加了我自己的gmail作为测试用户 这是我的AndroidManifest.xmlJava 登录失败。请检查您的网络连接,然后重试,java,android,google-play,google-play-services,google-play-games,Java,Android,Google Play,Google Play Services,Google Play Games,我试图用谷歌游戏服务制作简单的游戏,但我没能登录谷歌游戏 我得到这个错误: 登录失败。请检查您的网络连接,然后重试。 我有MainActivity和三个fragmenet(MainFragment、GameFragment和ResultFragment) MainFragment是主菜单的片段,在主菜单中使用have按钮单击开始游戏 授权? 我已经在Google Play开发者控制台中链接并授权我的游戏与SHA-1 当我使用Android Studio时,我的软件包名称看起来像:aplikaci
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="aplikacijezaandroid.thebuttonchallenge" >
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<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"/>
</application>
我已经解决了这个问题,所以我会发布答案 我已将应用程序id和排行榜id从strings.xml移到values文件夹中的ids.xml
我删除了所有客户端ID,并再次添加调试密钥库和发布密钥库的客户端ID。在我的情况下。我设置了一个测试帐户,但我的设备有一个默认帐户,这就是为什么我会出现此错误。我的错误,但为什么谷歌不能给我们一个更明显的错误报告 下面是我如何解决这个问题的。我所有的测试都是在使用测试帐户的调试版本下进行的。 我在google play develper控制台和google Api控制台中删除了该项目。并按照其他人在stackoverflow上提到的那样重新创建了一个项目。但这并没有帮助。我重新做了这个,最终在vane中结束 我在日志中找到了同样的词: 03-09 16:15:39.897:E/GameAgent(1225):无法从网络检索应用程序xxxxxxx 03-09 16:15:39.902:E/GameAgent(1225):应用程序ID xxxxxxx未与包com.gyj.pub.gpgsDemo关联。检查清单中的应用程序ID。 03-09 16:15:39.906:E/CheckGameplayAcl(23917):无法加载游戏的元数据 03-09 16:15:39.906:W/显著性(23917):onSignInFailed() 另外,我检查了下面所有3个元素,确定客户端apk是否符合Google Play-deverOper控制台的配置。 1.包名,都是一样的。 2.认证SHA1指纹(调试和发布)。 3.测试帐户 即使在那个时候,我也没有意识到我在测试期间没有输入帐户,设备如何知道要登录哪个帐户?
我尝试了另一个帐户。我将这个在sonsole中设置为测试帐户的帐户添加到设备中,重新设置了TypeANumber应用程序。它向我显示了从两个帐户中选择一个帐户的视图。我突然得到了它。如果你还没有发布你的应用程序/游戏:在你完成所有常规步骤后,确保您使用只有测试帐户的设备测试应用程序/游戏。我每一步都检查了几次,最后发现了这个奇怪的问题。最后,我用一个设备测试了我的应用程序,该设备只有我在开发者控制台上添加的测试帐户。成功了。希望,这对其他人有帮助。在我的情况下,问题是gmail帐户(两个帐户中的一个)没有添加到play store的testers帐户,而是我设备的默认帐户
我删除了该帐户以使另一个帐户(playstore中的testers帐户)成为默认帐户,并再次将其添加回来,然后它开始工作在我的情况下,我只在Google Play Console中添加了一个发布客户端ID。当我通过单击按钮运行我的应用程序时,会显示网络连接错误。但是当我运行由签名生成的apk时,它运行良好。因此,如果您想在内部作为运行应用程序,请添加调试客户端id。对我来说,我的项目SHA1与API控制台中的项目不同。
1.我已经查过了。
2.转到并进入我的项目的“凭据”页面。
3.单击编辑按钮(铅笔图标)并粘贴到SHA1上
4.你的游戏是以alpha版还是beta版发布的?我没有发布我的游戏,甚至我也没有将apk上传到Google Play开发者控制台。我刚刚将新游戏添加到游戏服务中,状态已准备好测试。我正在运行相同的错误。我的Id已经存在于ids.xml中。但是,删除所有客户端ID并再次添加它们是什么意思?我尝试创建一个新的调试密钥库并设置一个新的OAuth,甚至是一个全新的游戏。但我一直遇到这个奇怪的错误。
public class MainActivity extends Activity implements MainMenuFragment.Listener,
GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener,
GameFragment.Listener, ResultFragment.Listener {
//Fragments
MainMenuFragment mMainFragment;
GameFragment mGameFragment;
ResultFragment mResultFragment;
// Client used to interact with Google APIs
private GoogleApiClient mGoogleApiClient;
// Are we currently resolving a connection failure?
private boolean mResolvingConnectionFailure = false;
// Has the user clicked the sign-in button?
private boolean mSignInClicked = false;
// Automatically start the sign-in flow when the Activity starts
private boolean mAutoStartSignInFlow = true;
// request codes we use when invoking an external activity
private static final int RC_RESOLVE = 5000;
private static final int RC_UNUSED = 5001;
private static final int RC_SIGN_IN = 9001;
//Debug
private String TAG = "IGRA";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create the Google API Client with access to Plus and Games
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API).addScope(Plus.SCOPE_PLUS_LOGIN)
.addApi(Games.API).addScope(Games.SCOPE_GAMES)
.build();
//Fragments
mMainFragment = new MainMenuFragment();
mGameFragment = new GameFragment();
mResultFragment = new ResultFragment();
// listen to fragment events
mMainFragment.setListener(this);
mGameFragment.setListener(this);
mResultFragment.setListener(this);
//Treba dodati listenere
// add initial fragment (welcome fragment)
if (savedInstanceState == null) {
getFragmentManager().beginTransaction().add(R.id.container, mMainFragment).commit();
}
}
// Switch UI to the given fragment
void switchToFragment(Fragment newFrag) {
getFragmentManager().beginTransaction().replace(R.id.container, newFrag)
.commit();
}
private boolean isSignedIn() {
return (mGoogleApiClient != null && mGoogleApiClient.isConnected());
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "onStart(): connecting");
mGoogleApiClient.connect();
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "onStop(): disconnecting");
if (mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
}
@Override
public void onStartGameRequested() {
startGame();
}
@Override
public void onShowAchievementsRequested() {
}
@Override
public void onShowLeaderboardsRequested() {
}
void startGame(){
switchToFragment(mGameFragment);
}
public void onEnteredScore(int finalScore){
mResultFragment.setFinalScore(finalScore);
// push those accomplishments to the cloud, if signed in
pushAccomplishments(finalScore);
// switch to the exciting "you won" screen
switchToFragment(mResultFragment);
}
private void pushAccomplishments(int finalScore) {
if (!isSignedIn()) {
// can't push to the cloud, so save locally
// mOutbox.saveLocal(this);
Log.d(TAG, "can't push to the cloud, so save locally");
return;
}
Games.Leaderboards.submitScore(mGoogleApiClient, getString(R.string.number_guesses_leaderboard),
finalScore);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onConnected(Bundle bundle) {
Log.d(TAG, "onConnected(): connected to Google APIs");
// Show sign-out button on main menu
//mMainFragment.setShowSignInButton(false);
// Show "you are signed in" message on win screen, with no sign in button.
//mWinFragment.setShowSignInButton(false);
// Set the greeting appropriately on main menu
Player p = Games.Players.getCurrentPlayer(mGoogleApiClient);
String displayName;
if (p == null) {
Log.w(TAG, "mGamesClient.getCurrentPlayer() is NULL!");
displayName = "???";
} else {
displayName = p.getDisplayName();
}
mMainFragment.setGreeting("Hello, " + displayName);
// if we have accomplishments to push, push them
/*if (!mOutbox.isEmpty()) {
pushAccomplishments();
Toast.makeText(this, getString(R.string.your_progress_will_be_uploaded),
Toast.LENGTH_LONG).show();
}*/
}
@Override
public void onWinScreenDismissed() {
switchToFragment(mMainFragment);
}
@Override
public void onWinScreenSignInClicked() {
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == RC_SIGN_IN) {
mSignInClicked = false;
mResolvingConnectionFailure = false;
if (resultCode == RESULT_OK) {
mGoogleApiClient.connect();
} else {
BaseGameUtils.showActivityResultError(this, requestCode, resultCode,
R.string.signin_failure, R.string.signin_other_error);
}
}
}
@Override
public void onConnectionSuspended(int i) {
Log.d(TAG, "onConnectionSuspended(): attempting to connect");
mGoogleApiClient.connect();
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Log.d(TAG, "onConnectionFailed(): attempting to resolve");
if (mResolvingConnectionFailure) {
Log.d(TAG, "onConnectionFailed(): already resolving");
return;
}
if (mSignInClicked || mAutoStartSignInFlow) {
mAutoStartSignInFlow = false;
mSignInClicked = false;
mResolvingConnectionFailure = true;
if (!BaseGameUtils.resolveConnectionFailure(this, mGoogleApiClient, connectionResult,
RC_SIGN_IN, getString(R.string.signin_other_error))) {
mResolvingConnectionFailure = false;
}
}
// Sign-in failed, so show sign-in button on main menu
mMainFragment.setGreeting(getString(R.string.signed_out_greeting));
//mMainMenuFragment.setShowSignInButton(true);
// mWinFragment.setShowSignInButton(true);
}