facebook, twitter, google第三方登入
阿新 • • 發佈:2018-12-09
第三方登入相關問題記錄
接過好幾次的第三方登入了,但是由於第三方登入的相關id和secret是另外一個組負責的,每次出問題之後就得配合他們檢查相關配置。故在此記錄一下需要注意的地方
Facebook登入
- 在申請facebook登入時需要一個填寫一個金鑰雜湊,如果簽名檔案在你手上,你可以採用官網提供的方式來獲取金鑰雜湊。而像我們公司,簽名是公司統一管理的,然後應用在構建系統上構建。這樣你可以先在手機上安裝一個構建好的應用,然後通過如下方式獲取應用金鑰雜湊
private void generateKeyHash() { try { int i = 0; PackageInfo info = getPackageManager().getPackageInfo("應用包名", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { i++; MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String KeyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT); Utils.Log.e("hashkey: " + KeyHash); } } catch (PackageManager.NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } }
- 應用未釋出前需要使用測試賬號
登入facebook的時候,提示:應用未設定:應用仍處於開發模式,你沒有訪問許可權。請切換為已註冊的測試使用者,或向 應用管理員申請訪問許可權。而測試賬號可以在管理後臺生成。生成了測試賬號之後記得修改一下測試賬號的密碼。不然的話好 像會提示:登入的時候提示測試使用者無法訪問facebook網路,需要在測試使用者工具內授予非企業內訪問許可權。
應用上線之前記得釋出一下應用,然後用真實的facebook賬號登入測試一下。
Google登入
- 和facebook登入差不多的是,google登入申請相關資訊時需要獲取一個sha1值,如果你沒有簽名檔案的話可以通過如下方式獲取。
public static String generateSHA1() { try{ PackageInfo info = getPackageManager().getPackageInfo("應用包名", PackageManager.GET_SIGNATURES); byte[] cert = info.signatures[0].toByteArray(); MessageDigest md = MessageDigest.getInstance("SHA1"); byte[] publicKey = md.digest(cert); StringBuffer hexString =new StringBuffer(); for(int i =0; i < publicKey.length; i++) { String appendString = Integer.toHexString(0xFF& publicKey[i]).toUpperCase(Locale.US); if(appendString.length() ==1) hexString.append("0"); hexString.append(appendString); hexString.append(":"); } String result = hexString.toString(); return result.substring(0, result.length() -1); }catch(PackageManager.NameNotFoundException e) { e.printStackTrace(); }catch(NoSuchAlgorithmException e) { e.printStackTrace(); } return null; }
- 關於客戶端id的獲取,以下標紅的兩個地方是需要注意的。本來第一次接的時候,申請時上面的Api金鑰是配置好了的,第二次那邊沒有配置搞得我調了好久。第二個需要注意的地方是我們app需要的id是下面Web client對應的id.
- 一般我們的應用接google登入的話,還會接Firebase。這裡就需要注意了因為Firebase和google註冊的時候都是需要包名和sha1值,分開申請會衝突,需要關聯一下。一般由google賬號直接建立Firebase賬號就好了
Twitter登入
- 最後就是Twitter登入了,Twitter登入不需要像上面一樣去申請,但是有兩個地方需要注意的。首先是Callback URLs,最開始這個地方填了一個後臺配的網址就可以了。之後不知道是twitter更新了還是怎麼回事,全部都登入不上了。後端最後發現是需要填如下的URls
- 第二個問題是,需要下載Twitter客戶端才能登入,如果沒下載的話就登入不了。只要把下面的一項勾選就可以的
總結
其實接入這些第三方sdk最重要的資料就是官網,官網上有些雖然是英文,但是流程還是挺清楚的,對著走一遍就能接入的差不多。然後遇到問題,先定位出是什麼問題。然後可以去stackoverflow上查詢,一般會有的。