android应用集成google登录

android应用集成google登录

 https://www.cnblogs.com/zhengjunfei/

    集成google登录之前需要有一下两点要求,只有具备一下两点要求才能集成google登录:

        1,android 运行版本4.0及更新版本

        2,android 设备支持谷歌服务

    准备工作

    首先得在谷歌开发者后台上面创建一个自己的项目,网址:https://console.developers.google.com 

    

    

    点击“Credentials”选择“OAuth Client ID”创建一个名为LoginSimpleDemo的项目:

    

    

扫描二维码关注公众号,回复: 5947237 查看本文章

    接下来如1所示,选择“Android Learn More”:

    

    

    上面会出来让填写name和SHA-1的地方,在这里如3所示获取SHA-1的方法是用命令直接获取,

      keytool -exportcert -keystore C:\Users\larryluo\.android\debug.keystore -list -v ; 默认keystore密码为 android

    

    其实还有另外一种方法获取,就是在android studio中获取(如下图):

        1,选择android如1

        2,选中Gradle Scripts

        3,打开Gradle

        4,点击sync同步按钮,同步一下

        5,双击Tasks->android下面的signingReport

        6,双击之后就会生成SHA-1,在下图6处

    

    

    把SHA-1值填上之后,点击create:

    

    之后Tab选择“OAuth agree screen”, 之后填入你的邮箱还有project名称,之后点击“Save”(PS:Project中不能含有google,否则会报错):

    

    

    在下面这个网址中下载google-services.json文件,网址: https://developers.google.com/identity/sign-in/android/start-integrating?authuser=0 , 点击 按钮“GET A CONFIGURATION FILE”,进入到获取gson文件的页面,

    

    

    分别选中自己创建的app name和package name, 然后点击下面的按钮:

    

    

    然后选中sign in模块,如下图,之后点击按钮2:

    

    

    就进入了下载google-services.json文件的页面了,点击下载即可,下载下来之后放到你的project下面的app的根目录下面如下图:

    

    

    好了,准备阶段结束了,是不是感觉还是挺麻烦的,其实只要流程都看明白了,回过头来梳理其实也没那么麻烦,下面是真正的集成阶段了,其实集成阶段很简单,因为代码量很少;

    

    集成

    首先需创建一个GoogleApiClient对象:

        private GoogleApiClient mGoogleApiClient;

    之后初始化:

 GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)

                .requestId()

                .requestProfile()

                .requestEmail()

                .build();

        mGoogleApiClient = new GoogleApiClient.Builder(this)

                .enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener(){

                    @Override

                    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

                    }

                })

                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)

                .build();

    之后就是登录发起:

    

    Intent intent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);

    startActivityForResult(intent, RC_SIGN_IN);  //RC_SIGN_IN是requestcode

    

    在onActivityResult中拦获取登录的回调:

    

    GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

        handleSignInResult(result);

    

    在登录回调中可以获取用户的google账号的id,name,photourl等信息,至此整个登录过程完成。

    

  /**
    * Google plus 登陆回调
    */
  private void handleSignInResult(GoogleSignInResult result) {
    Log.i(TAG, "handleSignInResult----" + result.isSuccess());
    if (result.isSuccess()) {
      GoogleSignInAccount account = result.getSignInAccount();
      Log.i(TAG, "id--------" + account.getId() + "----name----" + account.getDisplayName() + "---photo--" + account.getPhotoUrl());
    }
  }

      最后不要忘了加入网络访问的权限奥~

猜你喜欢

转载自blog.csdn.net/Me_Ordinary/article/details/83010056