Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将google登录添加到我们的应用程序中_Android_Google Plus Signin - Fatal编程技术网

Android 如何将google登录添加到我们的应用程序中

Android 如何将google登录添加到我们的应用程序中,android,google-plus-signin,Android,Google Plus Signin,我正在创建一个应用程序,用户可以在其中注册自己并使用注册的详细信息登录。我要做的是我想添加谷歌登录按钮。当用户点击这个按钮,然后他们可以登录他们的谷歌帐户。我已经搜索了很多关于这一点,但我得到了谷歌登录活动的代码。有些人喜欢这样吗 public class MainActivity extends AppCompatActivity implements View.OnClickListener,GoogleApiClient.OnConnectionFailedListener { priv

我正在创建一个应用程序,用户可以在其中注册自己并使用注册的详细信息登录。我要做的是我想添加谷歌登录按钮。当用户点击这个按钮,然后他们可以登录他们的谷歌帐户。我已经搜索了很多关于这一点,但我得到了谷歌登录活动的代码。有些人喜欢这样吗

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

private LinearLayout Prof_Section;
private Button SignOut;
private SignInButton SignIn;
private TextView Name, Email;
private ImageView Prof_Pic;
private GoogleApiClient googleApiClient;
private static final 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.bn_logout);
    SignIn = (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);
    SignIn.setOnClickListener(this);
    SignOut.setOnClickListener(this);
    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();

}

@Override
public void onClick(View v) {

    switch (v.getId()) {
        case R.id.bn_login:
            SignIn();
            break;
        case R.id.bn_logout:
            SignOut();
            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 handleResult(GoogleSignInResult result) {
    if (result.isSuccess()) {
        GoogleSignInAccount account = result.getSignInAccount();

        String name = account.getDisplayName();
        String email = account.getEmail();
        String img_url = account.getPhotoUrl().toString();
        Name.setText(name);
        Email.setText(email);
        Glide.with(this).load(img_url).into(Prof_Pic);
        updateUI(true);
    } else {
        updateUI(false);

    }
}

private void updateUI(boolean isLogin) {

    if (isLogin) {
        Prof_Section.setVisibility(View.VISIBLE);
        SignIn.setVisibility(View.GONE);
    } else {
        Prof_Section.setVisibility(View.GONE);
        SignIn.setVisibility(View.VISIBLE);
    }
}

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

    if (requestCode == REQ_CODE) {

        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        handleResult(result);
    }
}
公共类MainActivity扩展AppCompativeActivity实现View.OnClickListener、GoogleAppClient.OnConnectionFailedListener{
私人线路布局教授组;
私人按钮签出;
私人签名按钮签名;
私有文本视图名称、电子邮件;
私人ImageView教授;
私人GoogleapClient GoogleapClient;
专用静态最终内部需求代码=9001;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Prof_Section=(线性布局)findViewById(R.id.Prof_Section);
注销=(按钮)findViewById(R.id.bn\u注销);
SignIn=(SignInButton)findViewById(R.id.bn_登录);
Name=(TextView)findViewById(R.id.Name);
Email=(TextView)findViewById(R.id.Email);
Prof_Pic=(ImageView)findViewById(R.id.Prof_Pic);
SignIn.setOnClickListener(此);
setOnClickListener(这个);
Prof_Section.setVisibility(View.GONE);
GoogleSignenOptions SignenOptions=新建GoogleSignenOptions.Builder(GoogleSignenOptions.DEFAULT_SIGN_IN).requestEmail().build();
GoogleAppClient=new GoogleAppClient.Builder(this).enableautomanager(this,this).addApi(Auth.GOOGLE\u SIGN\u IN\u API,signInOptions).build();
}
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例R.id.bn\u登录:
签名();
打破
案例R.id.bn\u注销:
签出();
打破
}
}
@凌驾
public void onconnection失败(@NonNull ConnectionResult ConnectionResult){
}
私人无效签名(){
Intent Intent=Auth.GoogleSignInApi.getsigninent(谷歌客户端);
startActivityForResult(意向、要求代码);
}
私有无效签出(){
Auth.GoogleSignInApi.signOut(GoogleAppClient.setResultCallback(new ResultCallback()){
@凌驾
public void onResult(@NonNull状态){
更新(假);
}
});
}
私有无效HandlerResult(谷歌签名结果){
if(result.issucess()){
GoogleSignInAccount account=result.getSignInAccount();
字符串名称=account.getDisplayName();
字符串email=account.getEmail();
字符串img_url=account.getPhotoUrl().toString();
Name.setText(Name);
Email.setText(Email);
使用(this.load)(img_url).into(Prof_Pic);
更新(真);
}否则{
更新(假);
}
}
私有void updateUI(布尔isLogin){
if(isLogin){
Prof_Section.setVisibility(视图可见);
登录设置可见性(视图已消失);
}否则{
Prof_Section.setVisibility(View.GONE);
SignIn.setVisibility(视图可见);
}
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
if(请求代码==请求代码){
GoogleSignInResult结果=Auth.GoogleSignInApi.getSignInResultFromIntent(数据);
handleResult(结果);
}
}
}


我想做的是,当用户登录谷歌帐户,然后下一个活动应该打开,用户信息应该在下一个活动中看到。我需要将他们的用户名、电子邮件和联系电话存储在mysql数据库中。建议我该怎么做。是否可能?

像这样更改代码

    private void handleResult(GoogleSignInResult result) {
        if (result.isSuccess()) {
            GoogleSignInAccount account = result.getSignInAccount();

            String name = account.getDisplayName();
            String email = account.getEmail();
            String img_url = account.getPhotoUrl().toString();
            Name.setText(name);
            Email.setText(email);
            Glide.with(this).load(img_url).into(Prof_Pic);
            //updateUI(true);
            Intent intent =new Intent(MainActivity.this,YourNewActivity.class);
            intent.putExtra("name",name);
            intent.putExtra("email",email);
            intent.putExtra("img_url",img_url);
            startActivity(intent);
            } else {
            //updateUI(false);
            }

在调用的活动中使用getintent获取从MainActivity发送的详细信息,并在那里显示详细信息。您还可以轻松地将它们发送到SQL数据库并存储在那里。

按照此链接中提供的步骤操作,兄弟,我已经通过了该链接,我已经添加了google登录按钮,但是当用户点击登录按钮时,新的活动就会打开,google个人资料信息就会出现在那里。您是否生成了google-services.json文件并启用了google登录。?查看此链接查看此视频是的,我已生成json文件并已添加到项目中。