Sto cercando di far funzionare le API dei giochi, con riferimento a https://github.com/playgameservices/android-samples/blob/master/BaseGameUtils/src/com/google/example/games/basegameutils/BaseGameActivity.java come codice di esempio.Codice di risposta imprevisto 403 per https://www.googleapis.com/games/v1/players/1123xxxxxx11712506520 e altri errori di riproduzione
Il mio è abbastanza simile, in pratica sto cercando di connettere un client di gioco e ricevere una risposta negativa. Quando si cerca di gestirlo con startResolutionForResult() questo è quello che ho ottenuto:
E/Volley(15638): [1492] il.a: Unexpected response code 403 for https://www.googleapis.com/games/v1/players/112370814111712506xxx
E/Volley(15638): [1492] il.a: Unexpected response code 403 for https://www.googleapis.com/games/v1/players/112370814111712506xxx
E/SignInIntentService(15638): Access Not Configured
[...]
E/LoadSelfFragment(15748): Unable to sign in - application does not have a registered client ID
L'ultimo messaggio, "l'applicazione non dispone di un ID cliente registrato" mi ha fatto pensare a this domanda ... ma non lo faccio Penso che il mio problema sia legato all'ID app/ID client dato che ho funzionato con le stesse chiavi API su un'altra macchina. Sono abbastanza sicuro anche della correttezza SHA1, derivata dal debug.keystore della macchina corrente.
Il problema sembra essere correlato a testare indirizzo che sto utilizzando, la cosa strana è che non ricevo sempre la stessa risposta: utilizzando stesse chiavi e le impostazioni, a volte ottenuto:
E/SignInIntentService(15638): Access Not Configured
o anche:
E/SignInIntentService(15638): Unable to load player
sto usando startResolutionForResult()
all'interno OnConnectionFailedListener, sta mostrando il login a schermo brevemente, ma poi si blocca con errori segnalati.
Un'altra cosa strana è che onActivityResult() viene chiamato, e il codice risultato è 10004
Un ultima cosa che non riesco a capire è il motivo per cui, dopo un sign-in senza successo, il metodo onConnectionFailed () viene chiamato più e più volte, looping della mia app. Il codice rilevante è il seguente:
public void initClient() { GamesClient.Builder gcBuilder = new GamesClient.Builder(this, cb, cf); gcBuilder.setGravityForPopups(Gravity.TOP | Gravity.CENTER_HORIZONTAL); //gcBuilder.setScopes(mScopes); mGamelient = gcBuilder.create(); mSchiacciameleView.setGameClient(gcBuilder.create()); } OnConnectionFailedListener cf = new OnConnectionFailedListener() { public void onConnectionFailed(ConnectionResult arg0) { Log.e("Verme", "CONN FAIL:" + arg0.getErrorCode()); if (arg0.hasResolution()){ PendingIntent pendingIntent = arg0.getResolution(); //startResolutionForResult(SchiacciaMeleGame.this, 66); try { arg0.startResolutionForResult(me, ConnectionResult.SIGN_IN_REQUIRED) ; } catch (SendIntentException e) { Log.e("Verme", "Err in resolution", e); } }else{ Log.e("Verme", "NO RESOLUTION"); } }
};
Ho lavorato con queste librerie per due giorni. Francamente, non mi piace il modo in cui Google sta gestendo questo; la documentazione è ancora incompleta e il comportamento in fase di esecuzione sembra un po 'incoerente (lo stesso codice funziona su un'altra macchina, SHA1 è corretto su entrambi). Forse è colpa mia?
Grazie per le risposte
Certo che posso, mi stavo solo chiedendo se può essere colpa mia. – Shine
Come sei sicuro che entrambi SHA1 siano corretti? – thiagolr