facebook
难点:服务器只接受来自社交官网的请求,并在URL返回token
方案一:app跳转浏览器,登录成功后,使用深度链接返回app
出现问题:深度链接被部分浏览器屏蔽
解决方法:使用app link(安卓6.0以上)
可以在AS的tools里找到相关配置和测试工具
部分机型仍然无法跳转到APP
方案二:使用webview加载登录网页,在intent中获取url信息
出现问题:FB返回登录结果时重开一个界面,无法正常显示
解决方法:
1、设置可以显示多个WebView
webSettings.setSupportMultipleWindows(true);
2、重写WebViewClient的shouldOverrideUrlLoading方法,检测到facebook相关的host时使用WebChromeClient创建新窗口
3、获取参数中携带的token,Uri.parse(url).getQueryParameter()
方案二基本上完美解决了这个问题