Android海外第三方登入之Google
阿新 • • 發佈:2019-02-10
首先翻牆
1.通過以上文件獲取應用的OAuth Client Id(android型別的)並將其下載JSON檔案放入app下面(與src平級, 應用名/app/client_secret.json)
2.再建立一個網頁型別的OAuth Client Id(後面初始化需要) 將其放在string檔案下
<string name="server_web_client_id">此處填寫網頁型別的OAuth Client Id</string>
3.build檔案新增依賴
implementation 'com.google.android.gms:play-services-auth:16.0.1'
4.開始寫程式碼(某個點選登入按鈕實現邏輯)
//初始化 GoogleSignInOptions gso =new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail()//獲取emial .requestServerAuthCode(AppUtils.getString(R.string.server_web_client_id))//注意,此處用的webclientid .build(); //建立 GoogleSignInClient GoogleSignInClient mGoogleClient = GoogleSignIn.getClient(context,gso);
//執行跳轉操作
Intent signInIntent = mGoogleClient.getSignInIntent();
activity.startActivityForResult(signInIntent, Tag.GOOGLE_INTENT_REQUESTCODE);//Tag隨意指定
5.通過 onActivityResult 獲取回撥的結果
protected void onActivityResult(int requestCode, int resultCode, Intent data) { //登入成功結果返回 Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data); try { GoogleSignInAccount account = task.getResult(ApiException.class); //通過account 獲取個人資訊 ... //一般登入流程,客戶端獲取到authCode在將authCode傳給伺服器,伺服器在通過authCode獲取詳 // 細的資訊 String authCode = acct.getServerAuthCode() } catch (ApiException e) { e.printStackTrace(); //注意如果返回錯誤碼:12500可能是GooglePLay服務版本太舊,請到google商店更新最新版本 } }
6.需要登出的話
mGoogleClient.signOut();
Over!