2016-09-16 2 views
0

問題があります。私はLibGDXでゲームを作っています。今、私はGoogle Sign-Inを実装したいと思います。私はどこでも検索しましたが、何も見つかりませんでした。Google LibGDXでのログイン

私が必要とするのは、特定のプラットフォームのコードを抽象化するためのリゾルバーですが、その方法はわかりません。助けてもらえますか?ここでEDIT

が、これは私のAndroidのレゾルバである 、コードです:

public GoogleResolverAndroid(final Context context) { 

    handler = new Handler(); 
    this.context = context; 

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
      .requestEmail() 
      .build(); 

    mGoogleApiClient = new GoogleApiClient.Builder(this.context) 
      .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .build(); 
} 
@Override 
public void loginGoogle() { 
    signIn(); 
} 

@Override 
public boolean getIsLoggedInGoogle() { 
    return isLoggedIn; 
} 

public void signIn() { 

    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
    ((AndroidLauncher)context).startActivityForResult(signInIntent, RC_SIGN_IN); 
    mGoogleApiClient.connect(); 

} 

private void signOut() { 
    Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
      new ResultCallback<Status>() { 
       @Override 
       public void onResult(Status status) { 
        isLoggedIn = false; 
       } 
      }); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); 
    if (requestCode == RC_SIGN_IN) { 
     GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
     handleSignInResult(result); 
    } 

    if (requestCode == REQUEST_RESOLVE_ERROR) { 
     mResolvingError = false; 
     if (resultCode == RESULT_OK) { 
      // Make sure the app is not already connected or attempting to connect 
      if (!mGoogleApiClient.isConnecting() && 
        !mGoogleApiClient.isConnected()) { 
       mGoogleApiClient.connect(); 
      } 
     } 
    } 
    } 
//some code other code 
// 
// 
// 




@Override 
public void onConnected(@Nullable Bundle bundle) { 

    OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient); 
    if (opr.isDone()) 
    { 
     Gdx.app.debug(TAG, "Loggato"); 
     GoogleSignInResult result = opr.get(); 
     handleSignInResult(result); 
    } else { 
     opr.setResultCallback(new ResultCallback<GoogleSignInResult>() { 
      @Override 
      public void onResult(GoogleSignInResult googleSignInResult) { 
       handleSignInResult(googleSignInResult); 
      } 
     }); 
    } 
} 

@Override 
public void onConnectionSuspended(int i) { 
    Gdx.app.debug(TAG, "onConnectionSuspended ma non so perchè"); 
} 

、これはlibgdx

 // Google 
    googleLoginButton = new LoginButton(tbs, stage, main); 
    googleLoginButton.setPosition(stage.getViewport().getWorldWidth()/2-googleLoginButton.getWidth() - 10, 
      stage.getViewport().getWorldHeight()/2-googleLoginButton.getHeight()/2 - 200); 

    googleLoginButton.addListener(new ClickListener() { 
     @Override 
     public void clicked(InputEvent event, float x, float y) { 
      main.googleResolver.loginGoogle(); 
      googlePrefs = main.googleResolver.getGooglePrefs(); 

      gLoginIn = true; 

      Gdx.app.debug(TAG, googlePrefs.toString()); 
     } 
    }); 

答えて

0

方法で、リゾルバメソッドを呼び出して、私のクラスであります私はInterfacingの使用で私のゲームのためにこれを解決しました。だから、Android and iOSという特定のコードを書いて、このインターフェイスをあなたのコアゲームから使用しなければなりません。

+0

ありがとう、私はそれを考え出した。しかし、私はいくつかの問題を持っています。私はこの[ガイド](https://developers.google.com/identity/sign-in/android/sign-in)に従っていますが、私はいくつかの点を理解できません。私のlibGDXプロジェクトでは、フラグメントを使用しないため、enableAutoManage()メソッドは機能しません。私はonConnectedとonConnectedSuspendを実装し、自分でconnect()とdisconnect()メソッドを呼び出す必要があります。しかし、私はそれらを正しい理由で実装する方法を知らない。 –

+0

Googleのゲームを使ってログインしていますか? – Marius

+0

いいえ、Google SignIn API。 –

関連する問題