本次在iOS與Android兩端分別調(diào)研Google, Facebook, Line, WhatsApp。其中WhatsApp沒有提供第三方登錄功能。下面,將在配置登錄的各個(gè)環(huán)節(jié)區(qū)分客戶端對Google, Facebook, Line進(jìn)行說明。
注冊App需要提交什么
iOS
| 第三方 | 提交內(nèi)容 |
|---|---|
| Bundle ID, App Store ID, Team ID | |
| Bundle ID | |
| Line | bundle ID, iOS Scheme |
iOS Scheme: your bundle identifier is com.example.app, set the iOS scheme as line3rdp.com.example.app.
Android
| 第三方 | 提交內(nèi)容 |
|---|---|
| debug & release SHA-1 fingerprint | |
| debug與release各自用的密鑰散列 | |
| Line | Android package name, Android package signature(Optional),Android scheme(Optional) |
獲得 SHA-1 fingerprint
// Debug
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
// Release
keytool -list -v -keystore your_keystore_name -alias your_alias_name
開發(fā)密鑰散列
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
發(fā)布密鑰散列
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64
注冊后第三方提供給我們什么
iOS
| 第三方 | 提供給我們 |
|---|---|
| OAuth Client ID | |
| CFBundleURLSchemes, FacebookAppID, LSApplicationQueriesSchemes | |
| Line | ChannelID |
Android
| 第三方 | 提供給我們 |
|---|---|
| OAuth Client ID | |
| facebook_app_id, fb_login_protocol_scheme | |
| Line | Channel ID |
Facebook代碼中的各種key值是在https://developers.facebook.com/docs/facebook-login/ios 的文檔頁中選擇好新建的項(xiàng)目后,自動生成的
如何安裝SDK
iOS
| 第三方 | 安裝方法 |
|---|---|
| pod | |
| pod, 下載SDK到本地 | |
| Line | pod, 下載SDK到本地 |
Android
| 第三方 | 安裝方法 |
|---|---|
| build.gradle加dependencies | |
| maven, 下載SDK到本地 | |
| Line | build.gradle加dependencies, 下載SDK到本地 |
實(shí)現(xiàn)第三方登錄的方法
iOS
| 第三方 | 登錄方法 |
|---|---|
| 添加GIDSignInButton,或自定義按鈕,將GIDSignInButton做為屬性加到按鈕中 | |
| 添加FBSDKLoginButton,或調(diào)用登錄頁顯示方法 | |
| Line | 調(diào)用登錄頁顯示方法 |
Android
| 第三方 | 登錄方法 |
|---|---|
| 調(diào)用登錄頁顯示方法 | |
| 1. 添加LoginButton,并將按鈕綁定CallbackManager 2. 自定義按鈕,調(diào)用登錄頁顯示方法 |
|
| Line | 調(diào)用登錄頁顯示方法 |
登錄成功后能獲得的信息
iOS
| 第三方 | 獲得的信息 |
|---|---|
| uid, accessToken, fullName, givenName, email | |
| uid, token, email | |
| Line | token, user profile ID, display name, status message, and profile picture. |
Android
| 第三方 | 獲得的信息 |
|---|---|
| uid, token, email | |
| uid, accessToken, email | |
| Line | accessToken, line_profile, line_credential, display_name, status_message, user_id, picture_url |
Facebook中,要請求額外的讀取權(quán)限,需設(shè)置 FBSDKLoginButton 對象的 readPermissions 屬性。
// Extend the code sample from 6a. Add Facebook Login to Your Code
// Add to your viewDidLoad method:
loginButton.readPermissions = @[@"public_profile", @"email"];
注意
網(wǎng)上提到facebook若是上一個(gè)賬號沒退出,那么換賬號時(shí)會出現(xiàn)無法獲取登錄信息的問題
分享調(diào)研
本次調(diào)研,測試了TikTok的分享功能。TikTok可分享的途徑有:Facebook, Message, SMS, Twitter, WhatsApp, Line,Messenger

點(diǎn)擊Other, 會出現(xiàn)系統(tǒng)的airdrop等分享方式

本次, 調(diào)研了Facebook, Line, WhatsApp, Twitter, 都可以成功分享,分享形式是將一段文案+鏈接轉(zhuǎn)發(fā)到各第三方軟件中。其中,F(xiàn)acebook與Twitter在分享出后,會將“文案+鏈接”轉(zhuǎn)換成可點(diǎn)擊的“封面+文案”樣式。其他App只以文本格式分享展示。
點(diǎn)擊鏈接后,提示跳入TikTok的App

Line
點(diǎn)擊后,跳入Line中的網(wǎng)頁,可網(wǎng)頁播放,可跳入App

點(diǎn)擊鏈接后,直接跳入TikTok

點(diǎn)擊后,跳入Twitter中的網(wǎng)頁,可網(wǎng)頁播放,可跳入App

Messenger
點(diǎn)擊后,跳入Messenger中的網(wǎng)頁,可網(wǎng)頁播放,可跳入App

關(guān)于是否被禁用的問題(針對facebook, messenger)
每天是否能分享多次?
通過實(shí)驗(yàn),短時(shí)間內(nèi)連續(xù)分享30多次,仍可以正常分享,沒有被禁的情況出現(xiàn)。
在http://www.itdecent.cn/p/e92bbc8a44ad中有人提?到:
分享網(wǎng)址次數(shù)過多,F(xiàn)acebook會自動屏蔽該網(wǎng)址。解決的辦法就是使用短域名服務(wù)。不僅如此,縮短鏈接還能追蹤click的點(diǎn)擊數(shù)量,每天的瀏覽量,用戶的國家分布情況。特別要說明的是,縮短網(wǎng)址要在登陸的情況下,才能追蹤詳細(xì)的信息,比如用戶來自哪個(gè)國家,單位時(shí)間內(nèi)多少用戶的點(diǎn)擊等等詳細(xì)信息。
是否有可能由于某些情況將整個(gè)App的分享功能封掉
由于開發(fā)過程實(shí)現(xiàn)facebook分享需要去facebook開發(fā)者網(wǎng)站申請平臺id,所以,在違反facebook規(guī)定的話,該App是會被facebook封掉的。
facebook政策:https://developers.facebook.com/policy/
其中,在我看來有風(fēng)險(xiǎn)的方面有:
1.8 應(yīng)用的負(fù)面反饋應(yīng)始終低于我們的限值。
5.2 不得提供或推廣侵犯任何第三方權(quán)利的內(nèi)容。
5.5.a 在美國,您必須采取一切必要步驟遵守?cái)?shù)字千年版權(quán)法的適用安全港原則,包括任命代理人接收侵權(quán)申訴通知、制定屢犯侵權(quán)人終止政策以及實(shí)施通知和撤除程序。
5.5.b 在其他國家,您必須遵守當(dāng)?shù)匕鏅?quán)法并在接收到侵權(quán)申訴通知后實(shí)施恰當(dāng)?shù)耐ㄖ统烦绦颉?/p>