Android中的Google登录会话无效

时间:2017-10-10 13:14:53

标签: php android

在我的Android应用程序中,每当我重新打开最小化的应用程序时,它都会再次为我提供登录屏幕。它应该直接给我导航/仪表板活动,因为我没有注销会话。

所以这是我的代码。我需要一些能够正确创建用户会话的实现。

package com.tricktechs.googlelogin;

import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.bumptech.glide.Glide;
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.SignInButton;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.ResultCallback;
import com.google.android.gms.common.api.Status;

public class MainActivity extends AppCompatActivity  implements View.OnClickListener,GoogleApiClient.OnConnectionFailedListener{

    LinearLayout prof_section;
    Button signout;
    SignInButton signInButton;
    TextView name,email;
    ImageView prof_pic;
    GoogleApiClient googleApiClient;
    final static  int REQ_CODE = 9001;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        prof_section = (LinearLayout)findViewById(R.id.prof_section);
        signout = (Button) findViewById(R.id.btn_logout);
        signInButton = (SignInButton) findViewById(R.id.bn_login);
        name = (TextView) findViewById(R.id.name);
        email = (TextView) findViewById(R.id.email);
        prof_pic = (ImageView)findViewById(R.id.prof_pic);
        //googleApiClient = (GoogleApiClient) findViewById()
        prof_section.setVisibility(View.GONE);

        GoogleSignInOptions signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestEmail().build();
        googleApiClient = new GoogleApiClient.Builder(this).enableAutoManage(this,this).addApi(Auth.GOOGLE_SIGN_IN_API,signInOptions).build();

        signInButton.setOnClickListener(this);
        signout.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch(view.getId())
        {
            case R.id.btn_logout :
                signOut();
                break;
            case R.id.bn_login :
                signIn();
                break;
        }
    }



    @Override
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

    }

    private  void signIn()
    {
        Intent intent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
        startActivityForResult(intent,REQ_CODE);
    }

    private void signOut()
    {
        Auth.GoogleSignInApi.signOut(googleApiClient).setResultCallback(new ResultCallback<Status>() {
            @Override
            public void onResult(@NonNull Status status) {
                updateUI(false);
            }
        });
    }

    private void handleResilt(GoogleSignInResult googleSignInResult)
    {
        if(googleSignInResult.isSuccess())
        {
            GoogleSignInAccount account = googleSignInResult.getSignInAccount();
            String Name = account.getDisplayName();
            String Email = account.getEmail();
           // String image_url = account.getPhotoUrl().toString();
            name.setText(Name);
            email.setText(Email);
          //  Glide.with(this).load(image_url).into(prof_pic);
            updateUI(true);
        }
        else
        {
            updateUI(false);
        }
    }

    private void updateUI(boolean isLogin)
    {
        if(isLogin)
        {
            prof_section.setVisibility(View.VISIBLE);
            signInButton.setVisibility(View.GONE);
        }
        else
        {
            prof_section.setVisibility(View.GONE);
            signInButton.setVisibility(View.VISIBLE);
        }
    }

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

        if(requestCode == REQ_CODE )
        {
            GoogleSignInResult reslut = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            handleResilt(reslut);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我认为您必须使用SharedPreferences来检查登录信息。重定向页面。

您可以参考以下链接:

How can I keep my google plus session opened after android application close?