一、接入Facebook登录

接入流程:

接入流程:https://developers.facebook.com/docs/facebook-login/android 官方Demo:https://github.com/facebook/facebook-android-sdk/tree/master/samples/FBLoginSample?fbclid=IwAR2sV-WAEz3_s6yxMwZkh1RuhGWiOv-qBuYfVNn8ma7K0q0-h5z0QhzZnMQ Facebook登录默认会提供以下授权,其他字段授权需要单独申请:

返回格式如下:

接入常见问题:

(1)登录报错,提示SERVER_ERROR: [code] 1675030 [message]: 执行查询时出错。 导致原因:项目处于开发中,并且用于测试Facebook登录的账号不是Facebook后台登录的开发者账号或者不是Facebook后台新建的测试账号。 解决办法: 1.项目状态改成已上线,如果只使用默认提供的字段或者已经申请成功授权字段;

2.后台新建测试账号,使用测试账号登录测试;

(2)不允许用户查看该应用程序。不允许用户按照开发者集配置查看此应用程序。

导致原因:项目状态为已上线状态,并且用于Facebook登录的用户账号为其他Facebook后台新建的测试账号。 解决办法:使用真实的Facebook账号进行登录操作。

(3)

导致原因:运行项目的密钥散列与Facebook开发者后台配置的密钥散列不匹配。 解决办法: 1.运行项目的密钥散列配置到开发者后台; 2.生成密钥散列的方式; Mac:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Windows:

//开发密钥 keytool -exportcert -alias androiddebugkey -keystore "C:\Users\USERNAME\.android\debug.keystore" | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" sha1 -binary | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" base64 //发布密钥 keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64

以上是官方的方式,windows生成方式可能会存在因安装的openssl版本不一致,导致生成的密钥散列不一致情况。

推荐使用以下代码生成密钥散列:

(4)Facebook登录返回空对象,导致空指针异常。

关于这个问题官方Demo只做了判空跳出的逻辑,未做其他处理。现在通过了重试处理进行了规避。

(5)Facebook登录导致ANR,主要出现在5.0/6.0内存相对较少的机型上。 出现问题的依赖版本:

官方demo下也有提到该问题https://github.com/facebook/facebook-android-sdk/issues/772 导致原因:应该是facebook内部错误。 解决办法:更新最新facebook sdk版本。(待验证) 最新sdk版本地址:https://github.com/facebook/facebook-android-sdk/releases

(6)Facebook登录报错

导致原因:网络问题,通过更换VPN可以解决。

解决办法:临时方案,出错时给予用户提醒。

提审流程:

Facebook登录默认会返回id,name,picture等公共字段,并且默认提供email授权。如需要其他字段就需要单独授权提审。 以需要gender/birthday字段为例子:

注意:在申请授权字段的时候必须将已上线状态切换成开发中状态,并且新建测试用户进行测试。

如果想查看授权字段的返回格式或类型及注意事项等,可以进入如下入口查看,以birthday为例:

提审官方视频教程地址:https://developers.facebook.com/docs/app-review 提审到反馈的时间周期:一般在半天或一天以内,国内建议上午进行提审操作。

提审被拒常见问题:

以Mitu及Arue共提审8次(申请gender/birthday字段),被拒6次,通过2次来分析,大体可分为5类情况。 (1)未展示申请字段的使用情况或展示为空;

申请字段的展示数据必须是Facebook登录用户的性别和生日,不能为空,不能为假数据。

(2)使用了假数据进行展示;

(3)无法下载到应用进行测试;

导致这种情况猜策是vpn不够稳定,上传的apk不够完整导致,建议使用vps 或者国内尽量在晚上6点之前上传,在晚上7点半以后上传的包出现这种情况 相对较高。

(4)应用内出现崩溃情况,导致无法测试; 可通过奔溃捕获工具进行问题确认,保证提审前不要出现严重Bug。

(5)提审时,Facebook开发者后台应用状态是已上线状态未切换成开发中状态, 导致无法对性别和生日进行授权操作(相当于应用内未申请性别和生日字段)。

正常情况下,需要展示性别和生日的授权框,类似于上图邮箱框。

避免上面5种情况,可以避免Facebook提审的相当大部分问题。