2019年3月18日星期一

Google sign-in for Android



1. Google sign-In 流程如下 :

參考:  https://developers.google.com/identity/sign-in/android/backend-auth


流程說明:
    1.1 Google sign in 之後, 會得到Google id token
    1.2 Google id token是google id 動態加密後的結果
    1.3 要解密得到google id , 需要安裝google Library,以及加上一些程式(下面會提到)
    1.4 取得google id之後,就是我們自己的登入流程


2. Google Library :

在pom.xml增加以下的設定:

  com.google.api-client
  google-api-client
  1.24.1



  com.google.api-client
  google-api-client-gson
  1.25.0



3. Server side sample :


@RestController
public class GoogleSignInController {
    private static final String CLIENT_ID = "xxxxxx-xxxxxx.apps.googleusercontent.com";

    @RequestMapping(value = "/googlesignin" ,method = RequestMethod.POST)
    public String googleSignIn(@RequestParam(value="idToken")String idTokenString){
        String result = "Invalid ID token.";

        JsonFactory jsonFactory = new GsonFactory();
        NetHttpTransport transport = new NetHttpTransport();
        GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
                .setAudience(Collections.singletonList(CLIENT_ID))
                .build();

        // (Receive idTokenString by HTTPS POST)
        GoogleIdToken idToken = null;
        try {
            idToken = verifier.verify(idTokenString);
        } catch (GeneralSecurityException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        if (idToken != null) {
            GoogleIdToken.Payload payload = idToken.getPayload();
            // Print user identifier
         String googleUserId = payload.getSubject();
            System.out.println("Google User ID: " + googleUserId);
            // todo : Use googleUserId 到資料庫查詢 member profile
            // ...
        }
        return result;
    }
|

沒有留言: