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文件并已添加到项目中。