SIGN_IN_REQUIRED - 谷歌游戏
问题描述:
我有一个简单的游戏,用排行榜按钮,它显示了球员的最高分,发布这个问题之前,我已经确定了有关以下:SIGN_IN_REQUIRED - 谷歌游戏
- SHA1指纹。
- 已启用API。
- 正确包装。
- 正确的应用程序ID。
- Google Play服务库已导入并添加。
- 导入的配置文件。
- Admob,Analytics和崩溃报告工作正常。
- 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());
}
}
答
据我所知,你应该有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
游戏已发布,并且已经过了5个小时。 – Jaeger
已解决,请检查:http://stackoverflow.com/a/27787091/5646429 – Jaeger