2019年3月28日星期四

android app - 取得 SHA-256 , SHA1 and MD5


1. 以下是方法:


1. 1. Faster way:
  1. Open Android Studio
  2. Open your Project
  3. Click on Gradle (From Right Side Panel, you will see Gradle Bar)
  4. Click on Refresh (Click on Refresh from Gradle Bar, you will see List Gradle scripts of your Project)
  5. Click on Your Project (Your Project Name form List (root))
  6. Click on Tasks
  7. Click on Android
  8. Double Click on signingReport (You will get SHA1 and MD5 in Run Bar(Sometimes it will be in Gradle Console))
  9. Select app module from module selection dropdown to run or debug your application

1.2 比較慢的方式:
keytool -exportcert -keystore path-to-debug-or-production-keystore -list -v

2. 使用時機 : 
android app 使用google sign in API的時候,
需要到google網站上面登錄app的 --> 
SHA-1 簽署憑證指紋 

3. 參考:




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