SIGN_IN_REQUIRED - 谷歌游戏

问题描述:

我有一个简单的游戏,用排行榜按钮,它显示了球员的最高分,发布这个问题之前,我已经确定了有关以下:SIGN_IN_REQUIRED - 谷歌游戏

  1. SHA1指纹。
  2. 已启用API。
  3. 正确包装。
  4. 正确的应用程序ID。
  5. Google Play服务库已导入并添加。
  6. 导入的配置文件。
  7. Admob,Analytics和崩溃报告工作正常。
  8. GET ACCOUNTS已添加,仍然相同。

我的问题是,没有帐户选择/选择器显示时,它甚至没有登录,即时得到以下错误:

ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{fbd982b: [email protected]}, message=null 

代码:

public class MainActivity extends AppCompatActivity implements 
    GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { 

ImageButton mLeaderBoard; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_welcome); 
    mLeaderBoard = (ImageButton) findViewById(R.id.leaderboard); 
    mLeaderBoard.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      ShowBoard(); 
     } 
    }); 

    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(Games.API) 
      .addScope(Games.SCOPE_GAMES) 
      .addScope(SCOPE_PLUS_PROFILE) 
      .build(); 
} 

@Override 
protected void onStart() { 
    super.onStart(); 
    mGoogleApiClient.connect(); 

} 

@Override 
protected void onStop() { 
    super.onStop(); 
    if (mGoogleApiClient.isConnected()) { 
     mGoogleApiClient.disconnect(); 
    } 
} 

private void ShowBoard() { 
    if(!isSignedIn()){ 
     mGoogleApiClient.connect(); 
    } 
    mGoogleApiClient.connect(); 
    if(isSignedIn()) 
    startActivityForResult(Games.Leaderboards.getLeaderboardIntent(mGoogleApiClient, 
      LEADERBOARD_TOP_SCORE_ID), 1); 
    else 
     Toast.makeText(this, getResources().getString(R.string.leaderboard_not_available), Toast.LENGTH_LONG).show(); 

} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // Check which request we're responding to 
    if (requestCode == 1) { 

     Log.i("GoogleSignInApi","Result: " + resultCode + " - Data: " + data.getData()); 
     if (resultCode == RESULT_OK) { 

     } 
    } 
} 



@Override 
public void onConnected(Bundle bundle) { 

} 

@Override 
public void onConnectionSuspended(int i) { 
    mGoogleApiClient.connect(); 
} 

@Override 
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
    Log.i("GoogleSignInApi","Problem: " + connectionResult.getErrorMessage() + " - Test: " + connectionResult.toString()); 
} 

} 
+0

游戏已发布,并且已经过了5个小时。 – Jaeger

+2

已解决,请检查:http://*.com/a/27787091/5646429 – Jaeger

据我所知,你应该有SCOPE_PLUS_PROFILE - OAuth2.0访问用户配置文件数据的范围。您需要启用Google+ API并使用SHA1和您的软件包创建凭证。 Oauth同意屏幕上显示您的电子邮件和产品名称。

请确保您有权限和所需要的所有包,下面的例子:

applicationId in tag <application> 
package name in AndroidManifest.xml 
package name in Credentials in Google Developer Console 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 

此外,您还需要调用onActivityResult。当客户端无法连接到Google Play服务时,需要这样做来满足所有可能的错误代码。

+0

Google+ API已启用,在我的Google开发者控制台中,只有一条记录(OAuth2),详细信息(SHA1指纹+套餐)是正确的,添加了权限,并添加了Plus Profile,仍是同样的问题,请检查更新后的代码。 – Jaeger