close

之前有寫到利用Facebook來做登入的動作

這次來利用也是大部分的人都有的Google帳號

Google也可以不用用來登入

單純地取得使用者的資料也可以


Goolge 登入指南網址

 

Step 1:

到最高層級的build.gradle新增下面方法

allprojects {
    repositories {
        google()//新增這行

        // If you're using a version of Gradle lower than 4.1, you must instead use:
        //mavenentral()這行官方教學裡面沒有是我自己後來新增的,沒有這行我的project會有error
        // maven {
        //     url 'https://maven.google.com'
        // }
    }
}

要看清楚你用的build的gradle等級是多少

可以從這行看

classpath 'com.android.tools.build:gradle:2.3.3'

我的是2.3.3所以剛剛上面我就要新增紅色字體的那些方法

 

Step 2:

到app層級的build.gradle裡面新增

dependencies {
        compile 'com.google.android.gms:play-services-auth:15.0.1'//新增這行
    }

 

Step 3:

選擇你想要利用哪個專案

 

 

 

看你要新增還是要利用你之前的專案

 

Step 4:

我從頭新增一個專案

你想要呈現什麼樣的名稱給使用者看

選擇了Android裝置後

到AndroidManifest.xml找出你的Package名稱

然後還要找出你的SHA-1

 

Step 5:

重頭戲來了!!!!!

每次要用到SHA-1這個東西我都要搞很久

結果今天到Youtube看到人家的教學影片

這方法超級快也不用找路徑不用安裝一堆東西

到Gradle然後找到signingReport

然後就可以看到Terminal裡看到了

是不是很快!!!!!!

我發現這個方法的時候我都要飛上天了

 

Step 6:

他會有一個文件要你下載

記得把他下載下來

放到app資料夾裡面就行了

 

Step 7:

接下來就是寫程式的部分了

到你需要利用Google登入的Activity

在onCreate新增

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail()
        .build();
mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

要記得要宣告

private GoogleSignInClient mGoogleSignInClient;

 

看你要利用Google提供的按鈕元件還是你要自己新增都可以

按下去的時候新增下面的就可以啟動利用google登入了

Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);
//RC_SIGN_IN為自己定義的int在onActivityResult才可以抓到是利用Google登入的

 

在onActivityResult新增

if (requestCode == RC_SIGN_IN) {
        // The Task returned from this call is always completed, no need to attach
        // a listener.
        Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
        handleSignInResult(task);
    }

最後新增這個fun

private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
    try {
        GoogleSignInAccount account = completedTask.getResult(ApiException.class);

        // 取得使用者的資料,取得後再看你想要對這些資料做什麼用途
        Log.d(TAG,"handleSignInResult getName:"+account.getDisplayName());
        Log.d(TAG,"handleSignInResult getEmail:"+account.getEmail());
    } catch (ApiException e) {
        // The ApiException status code indicates the detailed failure reason.
        // Please refer to the GoogleSignInStatusCodes class reference for more information.
        Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
       
    }
}

 

照著以上步驟就可以利用Google登入來取得使用者的資料了

arrow
arrow
    文章標籤
    android JAVA Google+
    全站熱搜

    小小工程師 發表在 痞客邦 留言(1) 人氣()