原文出处:http://blog.csdn.net/piao_polar/article/details/46742043

之前工作需要在手游中接入了facebook,并以此写了《手游接入Facebook功能》的博文。当时facebook sdk的版本还是3.x,代码集成度比较低,集成起来也比较麻烦。文中只是稍微提了下功能,然后扔了个github的demo链接,对一些细节问题没有描述。

之后公司里另外一个项目也有facebook的接入需求,并且由他们的运营方来具体实现,我们当时就facebook权限审核等问题讨论的比较频繁,以至于后来他们直接建了一个Facebook SDK开发群,不想后面常常有其他开发者搜索到这个群来交流问题。facebook sdk也更新了4.x版本(接口全变,但更优雅了。github上的demo,android版本已更新使用4.x sdk),感觉不少问题可以记录下来备忘,于是就有了本文。

1. 关于是否需要上传app给facebook审核:https://developers.facebook.com/docs/facebook-login/permissions/#noreview

a) 不需要审核的功能点:

使用FB进行第三方登录:Facebook Login
   获取已登录FB账号的相关信息,权限:public_profile
   获取已登录FB账号的同应用好友信息,权限:user_friends
   使用FB应用邀请功能:App Invites
   使用FB分享存文本或链接:Sharing
   在设备上存在Facebook客户端的情况下,分享本地图片

b) 需要审核的功能点:

非测试账号,在设备上不存在Facebook客户端的情况下,直接通过FB API分享本地图片 权限:publish_actions

2. 关于FB审核:

FB审核和苹果审核相比,速度很快,经常一个工作日就给结果。但他们返回的错误说明太格式化,也比较简略。也许会让人感觉莫名所以。而且似乎没有申诉过程,对审核结果不满意只好说明写详细点再提交一次。
   由于审核的是权限而不是app本身,也不通过FB来发行。我们可以针对审核出一个版本,反正到时候审核过了,真正上架的版本可以另出

a) 拒绝理由:我们无法在此平台上重现您所请求的功能的个性化体验。请提交使用此功能的应用版本,并附上详细的步骤指示。

由于FB的审核人员和苹果的审核不一样,他们大部分看不懂中文。
 
   解决方案:步骤和描述最好用英文写的细致点,提交的配图也加上1.2.3的顺序,和足够的标注。
   藏在比较深的功能,可以专门做一个审核版本,放在容易触发的地方。比如我原先分享截图是在战斗结束后分享,审核总是说顺利进行分享,最后我提交FB审核的版本直接在登录界面放了一个分享按钮,就解决这个问题了。

b) 拒绝理由:用户必须在用户消息字段输入所有内容

分享不能有预置内容。比如你试图在分享截图的时候,自动填充“XXX游戏真好玩,你也一起来玩吧”之类的话,审核有可能会驳回(那你SDK给这个接口干嘛……)
   
   解决方案:同上,依然是出审核版本的时候别填充,正式版本暗度陈仓就是了……

c) 拒绝理由:这个权限你的应用莫须有。

比如:您的应用使用社交插件或分享对话框将内容分享至Facebook。这些操作不需要publish_actions权限,也不需要接受审核。

我遇到的情况是有分享截图的需求,申请publish_actions的时候遇到。这个其实是审核人员的考虑不周的问题。如上述审核功能点部分所说,如果用户的设备上没有FB app,那么分享本地文件是需要这个权限的。

解决方案:再次提交,且在重现步骤中强调,在一个没有安装FB app的设备中分享本地图片是需要权限的。还可以上传包含这个的截图(换成你自己在相应权限下的截图)给他看提高说服力,然后祈祷下次审核的人员能认真和专业点。

d) 拒绝理由:Your app must not use a Facebook Web Dialog.Utilize our native Facebook Login SDK for iOS, so that users do not need to login twice.

   这个是一个比较坑爹的理由。因为第一句别用facebook web dialog,很容易让人误以为是任何情况下都不许用,但这不现实,因为没有FB app的情况下,你必须用到这个形式。其实真实的情况是:

你:说人话
   FB:在设备上存在FB app的情况下,别用web dialog的形式让用户登录。

这样应该就理解了吧。

解决方案:检查在有FB app的情况下,调用登录接口时,会转向到FB app去登录(如果FB app是已登录状态则不需要再登录)。而不是弹出浏览器页面或者在应用内弹出窗口让用户输入密码。
             在FB控制台,Settings页下把Single Sign On 开起来。

3. 疑难杂症

a) 用具有测试权限或更高权限的号可以登录,普通账号无法登录。

因为应用没有设置成对外可用的状态。

解决方案:去FB控制台,Status&Review分页下,把右上角“Do you want to make this app and all its live features available to the general public?”边上那个大大的开关设置成开的状态。

b) 集成代码貌似都加上了,但触发相关功能没效果或会闪退

一般是文档没读仔细还是有缺漏导致的。把两个版本的Getting Started一节再看看检查一遍。

android:AndroidManifest.xml里 FB相关的 provider/meta-data/activity 没加,或者没改成对应SDK版本的格式 ( 3.x/4.x的provider和activity的内容都略有变化)
            strings.xml 里 facebook_app_id 没加

iOS:plist 里面 FacebookAppID / FacebookDisplayName / URL types
        application delegate 里面 applicationDidBecomeActive/didFinishLaunchingWithOptions/openURL 没添加响应的FB代码

c) 进入登录成功回调,有AccessToken,但Profile数据不正常

解决方案:先参考前面一点,看看是不是都加好了。

android:在获取到AccessToken后调用 Profile.fetchProfileForCurrentAccessToken();

iOS:添加 [FBSDKProfile enableUpdatesOnAccessTokenChange:YES];

d) 实现App Invite的时候提示App Link有问题

解决方案:这个Link必须去FB创建: https://developers.facebook.com/quickstarts/?platform=app-links-host

e) App Invite调用成功后对方收不到消息:

如果对方已经安装了这个应用,那么你得他的FB账号设置成测试者,才能再次收到消息。见 官网说明Testing一节

参: http://stackoverflow.com/questions/29484815/fbsdkappinvitedialog-in-facebook-ios-sdk-version-4-0-1-invite-successfully-sent

4. 其他

a) 使用 Graph API Explorer。

可以比较方便的模拟数据来回,也可以用来清理权限。

b) 如果升级到iOS SDK 4.x,那么就不再支持iOS7以下的系统了,比如iOS6。这个得和运营商量好。

c) 写本文的时候,由于之前都没保存截图,所以用的基本都是群里或者私聊中别人的截图。发现他们的截图貌似都是中文的,而我当时自己遇到的审核错误提示貌似都是英文的

后面才发现官网页面最下方,FB官方可以选择一个查看页面的语言,部分页面有FB的官方翻译。英文苦手的可以考虑使用。

不过直接看英文可能会更好,因为不是所有的页面都有官方翻译版本,有的页面翻译可能是过期的,而且google的时候,通常用英文做关键词才方便从StackOverFlow找到有用的信息

5. 资源

a) FB官方的SDK源码和demo

https://github.com/facebook
   https://github.com/facebookarchive

b) cocos2dx接入demo。 (FB SDK版本:Android 4.x/iOS 3.x)

https://github.com/piaopolar/FacebookPlugin/

c) FB SDK集成讨论QQ群:Facebook SDK开发 340348340

交叉参考:http://blog.csdn.net/xiadasong007/article/details/8599611

http://mayingchen003.blog.163.com/blog/static/16268184201372083220556/



手游接入Facebook的那些坑相关推荐

  1. 接入Facebook的那些坑(精)

    转自:http://blog.csdn.net/piao_polar/article/details/46742043 之前工作需要在手游中接入了facebook,并以此写了<手游接入Faceb ...

  2. 手游推广加盟有哪些坑?

    现在大环境不好,不少人遭遇裁员失业.生意不好等困境,或者是正在工作的也想要多发展一门副业保底,不少人便把目光转向近来大火的游戏代理行业中.由于移动端游戏销售收入每年都占据全国游戏销售总收入的大头,选择 ...

  3. 手游测试常见10个坑及填坑建议

    随着手游市场的竞争越来越激烈,测试发布已经成为了几乎所有游戏的必经之路.捷克AppAgent公司的Peter Fodor指出了测试发布最容易陷进去的10个坑,并且根据他们常见到或者亲身经历过的错误给出 ...

  4. 腾讯游戏健康系统继续推进:1月新增16款手游接入

    [TechWeb]1月31日消息,腾讯游戏官方微信号今天发布消息称,2018年,腾讯健康系统共计在15款热门游戏中完成了接入与启用.截至1月31日,今年又有16款移动游戏新增进来,腾讯健康系统的覆盖产 ...

  5. 谈谈龙之谷手游兼容测试的一百个坑

    原文链接:http://wetest.qq.com/lab/view/312.html 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 一.项目背景 1. 高价值IP 龙之谷 ,一款优 ...

  6. 谈谈龙之谷手游兼容测试的一百个坑 1

    原文链接:http://wetest.qq.com/lab/view/312.html 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 一.项目背景 1. 高价值IP 龙之谷 ,一款优 ...

  7. 和方舟rust一样的手游_偶像梦幻祭2新活动 ES手游全新开服

    毕竟四年前也没玩过什么手游,当时也就fgo和es了,所以对于游戏良不良心没什么概念,只是和单机比,手游确实费钱. 退坑最开始的原因是撕逼,是cp之间的撕逼,然后国服官方这边撩一下那边撩一下,作为玩家心 ...

  8. 教你快速高效接入SDK——手游聚合SDK的总体思路和架构

    U8SDK技术博客:http://www.uustory.com/,欢迎来坐坐. 百度传课已经停运,最新U8SDK视频教程已经转移至B站:U8SDK最新视频教程 题记:很多做游戏开发的人,估计都或多或 ...

  9. 棱镜刘大澎:云时代的手游SDK接入

    棱镜公司CEO刘大澎通过GameRes给大家分享他们是如何为手游开发商解决国内分发渠道过于分散这一难题的.刘大澎称,棱镜SDK的产品架构基于云端服务,可以为手游开发商提供最安全便捷的手游SDK接入服务 ...

最新文章

  1. 我的2019春招(前端暑期实习)记录
  2. 第十八 django及ORM操作
  3. ArcGIS API for JavaScript4.x 之加载2D、3D地图
  4. 智能车竞赛计时系统感应线圈放在节能充电线圈上输出电压会多大?
  5. 验证用户身份Filter过滤器
  6. flume可以实时监控mysql嘛_flume使用(三):实时log4j日志通过flume输出到MySql数据库...
  7. 垃圾回收算法_垃圾回收算法有哪些
  8. StyleGAN如何定制人脸生成
  9. 高并发处理方案_高并发系统下的缓存解决方案
  10. 这两个VHDL的问题终于解决了!
  11. 旋转矩阵、旋转向量(轴角)、四元数、欧拉角之间相互转换的代码实现(利用Eigen实现)...
  12. Nugine: Rust 性能调优
  13. 笔记本能安装联想智能云教室吗_挑战Jupyter Notebook:云协作、云硬件,上云的Notebook编程环境...
  14. Windows驱动开发WDM (2)- 一个简单的WDM驱动程序
  15. 微博舆情挖掘需求分析
  16. Setup Time与Hold Time
  17. 可汉学院python_A可汗学院-统计学python实现1-10
  18. Pycharm 一键加引号、批量加引号
  19. HCIA 8-17 笔记
  20. 亲自动手实现Python+pygame中国象棋游戏

热门文章

  1. arduino 长传出错_求助,米思齐写arduino总是上传失败。
  2. java 单行文本_Java Swing界面编程(17)---单行文本输入组件:JTextField
  3. tensorflow2.0对应python版本_TensorFlow2.1.0最新版本安装详细教程
  4. for循环的一个复制算法(Java)
  5. JavaScript:new关键字的执行过程
  6. 计算机科学与技术python方向_专业解读丨计算机科学与技术
  7. 马健计算机博士,马健-中国科学院大学-UCAS
  8. 机器视觉硬件选型——镜头选型
  9. Django开发密码管理表实例【附源码】
  10. tomcat源码分析--初始化与启动