Java 谷歌使用LibGDX登录
我有个问题。我正在用LibGDX做一个游戏。现在我想实现谷歌登录。我到处找,但什么也没找到 我需要的是一个解析器来为特定的平台抽象代码,但我不知道怎么做。有人能帮忙吗 编辑 这是密码, 这是我的Android解析器:Java 谷歌使用LibGDX登录,java,android,libgdx,game-engine,social-networking,Java,Android,Libgdx,Game Engine,Social Networking,我有个问题。我正在用LibGDX做一个游戏。现在我想实现谷歌登录。我到处找,但什么也没找到 我需要的是一个解析器来为特定的平台抽象代码,但我不知道怎么做。有人能帮忙吗 编辑 这是密码, 这是我的Android解析器: public GoogleResolverAndroid(final Context context) { handler = new Handler(); this.context = context; GoogleSignInOptions gso
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项目中,我不使用片段,所以enableautomanager()方法不起作用。我需要实现onConnected和onConnectedSuspend,并自己调用connect()和disconnect()方法。但是我不知道如何正确地实现它们为什么。不,谷歌登录API。告诉我你的代码中到底哪里有问题。编辑我的问题。另一个问题。在返回到libgdx方法之前,如何等待onActivityResult方法完成?如果没有片段活动(可以使用libgdx),则需要自己管理api客户端的连接和断开连接方法,看看它是如何工作的。我的项目的一部分是用Kotlin编写的,但它与Java非常相似。我不建议等待onActivityResult方法完成,因为它可能会阻止您的游戏。最好询问API用户是否已登录。
// 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());
}
});