Java 如何重定向谷歌登录按钮

Java 如何重定向谷歌登录按钮,java,android,Java,Android,在添加与Firebase连接的Google登录按钮后,用户登录到新活动后,我在哪里添加重定向 尝试将其添加到与按钮相同的功能中,没有错误或任何东西,应用程序只是崩溃 以下是主要的java代码: package com.example.firebase.firebaseyoutube; import android.content.Intent; import android.support.annotation.NonNull; import android.support.v7.app.Ap

在添加与Firebase连接的Google登录按钮后,用户登录到新活动后,我在哪里添加重定向

尝试将其添加到与按钮相同的功能中,没有错误或任何东西,应用程序只是崩溃

以下是主要的java代码:

package com.example.firebase.firebaseyoutube;

import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.auth.api.signin.GoogleSignInResult;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.GoogleAuthCredential;
import com.google.firebase.auth.GoogleAuthProvider;

public class MainActivity extends AppCompatActivity implements     GoogleApiClient.OnConnectionFailedListener, View.OnClickListener {
    private static int RC_SIGN_IN = 0;
    private static String TAG = "MAIN_ACTIVITY";
    private GoogleApiClient mGoogleApiClient;
    private FirebaseAuth mAuth;
    private FirebaseAuth.AuthStateListener mAuthListener;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mAuth = FirebaseAuth.getInstance();
    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();
            if(user != null)
                Log.d("AUTH", "user logged in: " + user.getEmail());
            else
                Log.d("AUTH", "user logged out.");
        }
    };

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(getString(R.string.default_web_client_id))
            .requestEmail()
            .build();

    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this, this)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();

    findViewById(R.id.sign_in_button).setOnClickListener(this);
    findViewById(R.id.sign_out_button).setOnClickListener(this);
}

@Override
protected void onStart() {
    super.onStart();
    mAuth.addAuthStateListener(mAuthListener);
}

@Override
protected void onStop() {
    super.onStop();
    if(mAuthListener != null)
        mAuth.removeAuthStateListener(mAuthListener);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == RC_SIGN_IN){
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

        if(result.isSuccess()){
            GoogleSignInAccount account = result.getSignInAccount();
            firebaseAuthWithGoogle(account);
        }
        else
            Log.d(TAG, "Google Login Failed");

    }
}

private void firebaseAuthWithGoogle(GoogleSignInAccount acct){
    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    Log.d("AUTH", "signInWithCredential:oncomplete: " + task.isSuccessful());
                }
            });
}

private void signIn(){
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, RC_SIGN_IN);
}

private void signOut(){
    FirebaseAuth.getInstance().signOut();
}

@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
    Log.d(TAG, "Connection failed.");
}

@Override
public void onClick(View view) {
    switch(view.getId()){
        case R.id.sign_in_button:
            signIn();
            break;
        case R.id.sign_out_button:
            signOut();
            break;
    }
}
}
package com.example.firebase.firebaseyoutube;
导入android.content.Intent;
导入android.support.annotation.NonNull;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入com.google.android.gms.auth.api.auth;
导入com.google.android.gms.auth.api.signin.GoogleSignInAccount;
导入com.google.android.gms.auth.api.signin.GoogleSignInOptions;
导入com.google.android.gms.auth.api.signin.GoogleSignInResult;
导入com.google.android.gms.common.ConnectionResult;
导入com.google.android.gms.common.api.GoogleAppClient;
导入com.google.android.gms.tasks.OnCompleteListener;
导入com.google.android.gms.tasks.Task;
导入com.google.firebase.auth.AuthCredential;
导入com.google.firebase.auth.AuthResult;
导入com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.auth.FirebaseUser;
导入com.google.firebase.auth.GoogleAuthCredential;
导入com.google.firebase.auth.GoogleAuthProvider;
公共类MainActivity扩展AppCompativeActivity实现GoogleAppClient.OnConnectionFailedListener、View.OnClickListener{
私有静态int RC_SIGN_IN=0;
私有静态字符串TAG=“MAIN\u活动”;
私人GoogleapClient MGoogleapClient;
私人消防队;
私有FirebaseAuth.AuthStateListener mAuthListener;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth=FirebaseAuth.getInstance();
mAuthListener=new FirebaseAuth.AuthStateListener(){
@凌驾
AuthStateChanged上的公共void(@NonNull FirebaseAuth FirebaseAuth){
FirebaseUser=firebaseAuth.getCurrentUser();
如果(用户!=null)
Log.d(“AUTH”,“用户登录:”+user.getEmail());
其他的
Log.d(“AUTH”,“用户注销”);
}
};
GoogleSignenOptions gso=新建GoogleSignenOptions.Builder(GoogleSignenOptions.DEFAULT\u登录)
.requestIdToken(getString(R.string.default\u web\u client\u id))
.requestEmail()
.build();
mgoogleapclient=新的Googleapclient.Builder(此)
.enableAutoManage(这个,这个)
.addApi(Auth.GOOGLE\u SIGN\u IN\u API,gso)
.build();
findviewbyd(R.id.sign_in_按钮);
findviewbyd(R.id.sign\u out\u按钮);
}
@凌驾
受保护的void onStart(){
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
@凌驾
受保护的void onStop(){
super.onStop();
if(mAuthListener!=null)
removeAuthStateListener(mAuthListener);
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
if(requestCode==RC\u登录){
GoogleSignInResult结果=Auth.GoogleSignInApi.getSignInResultFromIntent(数据);
if(result.issucess()){
GoogleSignInAccount account=result.getSignInAccount();
firebaseAuthWithGoogle(账户);
}
其他的
Log.d(标记“Google登录失败”);
}
}
私有void firebaseAuthWithGoogle(谷歌签名帐户){
AuthCredential credential=GoogleAuthProvider.getCredential(acct.getIdToken(),null);
mAuth.SIGNWITH凭证(凭证)
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
Log.d(“AUTH”,“signInWithCredential:oncomplete:”+task.issusccessful());
}
});
}
私人无效签名(){
意向符号=Auth.googlesignianpi.getsignient(mgoogleapclient);
startActivityForResult(签名、注册);
}
私有无效签出(){
FirebaseAuth.getInstance().signOut();
}
@凌驾
public void onconnection失败(@NonNull ConnectionResult ConnectionResult){
Log.d(标记“连接失败”);
}
@凌驾
公共void onClick(视图){
开关(view.getId()){
案例R.id.登录按钮:
签名();
打破
案例R.id.注销按钮:
签出();
打破
}
}
}

如果应用程序崩溃,那就是错误!添加logcati已经删除了它,但是我应该在哪里添加函数呢?在登录功能中?或者只是创建另一个?
onActivityResult
是单击按钮后发生的情况