8

サンプルとしてhttps://github.com/playgameservices/android-samples/blob/master/BaseGameUtils/src/com/google/example/games/basegameutils/BaseGameActivity.javaを参考にして、ゲーム API を動作させようとしています。コード。

私のものは非常に似ています。基本的には、ゲームクライアントに接続して否定的な回答を受け取ろうとしています。startResolutionForResult() で管理しようとすると、次のようになります。

  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

「アプリケーションに登録済みのクライアント ID がありません」という最後のメッセージで、この質問について考えさせられました...しかし、私の問題はアプリ ID/クライアント ID に関連しているとは思いません。機械。現在のマシンの debug.keystore から派生した SHA1 の正確性もかなり確信しています。

この問題は、私が使用しているテスト アドレスに関連しているようです。奇妙なことに、常に同じ応答を受け取るとは限りません。同じキーと設定を使用すると、時々次のようになりました。

 E/SignInIntentService(15638): Access Not Configured

あるいは:

  E/SignInIntentService(15638): Unable to load player

OnConnectionFailedListener 内で使用しstartResolutionForResult()ています。ログイン画面が短時間表示されますが、報告されたエラーでクラッシュします。

  • もう 1 つの奇妙な点は、onActivityResult() が呼び出され、結果コードが 10004 になることです。

  • 最後に理解できないのは、サインインに失敗した後、メソッド onConnectionFailed() が何度も呼び出され、アプリがループする理由です。関連するコードは次のとおりです。

    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");
        }
    
    }
    

    };

私はこれらのライブラリを2日間いじっています。率直に言って、私は Google がこれを管理している方法が好きではありません。ドキュメンテーションはまだ不完全で、実行時の動作には少し一貫性がないようです (まったく同じコードが別のマシンで動作しており、SHA1 は両方で正しいです)。多分それは私のせいですか?

返信ありがとうございます

4

1 に答える 1