本次在iOS与Android两端分别调研Google, Facebook, Line, WhatsApp。其中WhatsApp没有提供第三方登录功能。下面,将在配置登录的各个环节区分客户端对Google, Facebook, Line进行说明。
注册App需要提交什么
iOS
第三方 | 提交内容 |
---|---|
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
第三方 | 提交内容 |
---|---|
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
开发密钥散列
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
发布密钥散列
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 的文档页中选择好新建的项目后,自动生成的
如何安装SDK
iOS
第三方 | 安装方法 |
---|---|
pod | |
pod, 下载SDK到本地 | |
Line | pod, 下载SDK到本地 |
Android
第三方 | 安装方法 |
---|---|
build.gradle加dependencies | |
maven, 下载SDK到本地 | |
Line | build.gradle加dependencies, 下载SDK到本地 |
实现第三方登录的方法
iOS
第三方 | 登录方法 |
---|---|
添加GIDSignInButton,或自定义按钮,将GIDSignInButton做为属性加到按钮中 | |
添加FBSDKLoginButton,或调用登录页显示方法 | |
Line | 调用登录页显示方法 |
Android
第三方 | 登录方法 |
---|---|
调用登录页显示方法 | |
1. 添加LoginButton,并将按钮绑定CallbackManager 2. 自定义按钮,调用登录页显示方法 |
|
Line | 调用登录页显示方法 |
登录成功后能获得的信息
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中,要请求额外的读取权限,需设置 FBSDKLoginButton 对象的 readPermissions 属性。
// Extend the code sample from 6a. Add Facebook Login to Your Code
// Add to your viewDidLoad method:
loginButton.readPermissions = @[@"public_profile", @"email"];
注意
网上提到facebook若是上一个账号没退出,那么换账号时会出现无法获取登录信息的问题
分享调研
本次调研,测试了TikTok的分享功能。TikTok可分享的途径有:Facebook, Message, SMS, Twitter, WhatsApp, Line,Messenger
点击Other, 会出现系统的airdrop等分享方式
本次, 调研了Facebook, Line, WhatsApp, Twitter, 都可以成功分享,分享形式是将一段文案+链接转发到各第三方软件中。其中,Facebook与Twitter在分享出后,会将“文案+链接”转换成可点击的“封面+文案”样式。其他App只以文本格式分享展示。
点击链接后,提示跳入TikTok的App
Line
点击后,跳入Line中的网页,可网页播放,可跳入App
点击链接后,直接跳入TikTok
点击后,跳入Twitter中的网页,可网页播放,可跳入App
Messenger
点击后,跳入Messenger中的网页,可网页播放,可跳入App
关于是否被禁用的问题(针对facebook, messenger)
每天是否能分享多次?
通过实验,短时间内连续分享30多次,仍可以正常分享,没有被禁的情况出现。
在https://www.jianshu.com/p/e92bbc8a44ad中有人提�到:
分享网址次数过多,Facebook会自动屏蔽该网址。解决的办法就是使用短域名服务。不仅如此,缩短链接还能追踪click的点击数量,每天的浏览量,用户的国家分布情况。特别要说明的是,缩短网址要在登陆的情况下,才能追踪详细的信息,比如用户来自哪个国家,单位时间内多少用户的点击等等详细信息。
是否有可能由于某些情况将整个App的分享功能封掉
由于开发过程实现facebook分享需要去facebook开发者网站申请平台id,所以,在违反facebook规定的话,该App是会被facebook封掉的。
facebook政策:https://developers.facebook.com/policy/
其中,在我看来有风险的方面有:
1.8 应用的负面反馈应始终低于我们的限值。
5.2 不得提供或推广侵犯任何第三方权利的内容。
5.5.a 在美国,您必须采取一切必要步骤遵守数字千年版权法的适用安全港原则,包括任命代理人接收侵权申诉通知、制定屡犯侵权人终止政策以及实施通知和撤除程序。
5.5.b 在其他国家,您必须遵守当地版权法并在接收到侵权申诉通知后实施恰当的通知和撤除程序。