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;
}
|