接入Facebook的那些坑(精)
转自: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
接入Facebook的那些坑(精)相关推荐
- 手游接入Facebook的那些坑
原文出处:http://blog.csdn.net/piao_polar/article/details/46742043 之前工作需要在手游中接入了facebook,并以此写了<手游接入 ...
- (unity)新手接入Facebook登录,分享以及google登录,Android,IOS,OC接入篇
最近接Android,IOS的Facebook登录,分享 以及Google登录,分享流程以及遇到的问题整理. 一. Android接入 google登录 第一步,前往 [ firebase] http ...
- Unity2019接入FaceBook登录详解(Android)
Unity接入FaceBook 如何获取FaceBook SDK Unity导入Facebook SDK Unity代码 如何获取FaceBook SDK 注册前的准备工作 由于国内网络无法直接打开F ...
- unity 接入 Facebook 登录
Unity 接入 Facebook 登录 Unity 接入 Facebook 登陆 使用unity sdk 到这 https://developers.facebook.com/docs/unity/ ...
- 京东api接入的几个坑(宙斯) 转载
===== [ 京东api接入的几个坑(宙斯) 原创 2014年10月30日 17:43:51 8719 写这篇文章为了发下牢骚,鄙视下京东api上的不足, 怀念下下午的2个小时..... http: ...
- 接入FaceBook登录和遇到问题排查
一.接入Facebook登录 接入流程: 接入流程:https://developers.facebook.com/docs/facebook-login/android 官方Demo:https:/ ...
- unity接入facebook SDK时 警告:“OpenSSL not found. Make sure that OpenSSL is installed
接入facebook的SDK后配置FacebookSettings时警告OpenSSL not found. 解决方法: 1.下载并安装OpenSSL.http://slproweb.com/prod ...
- Android App接入Facebook分享SDK,概率性无法启动Facebook客户端的问题分析
问题来源 由于我司的android app产品主要是面向海外,因此,app中的分享功能接入facebook分享是必不可少的.最近在接入facebook android sdk进行分享时,发现一个非常奇 ...
- Unity 接入Facebook
最近由于项目需要,接入Fackbook.原先的已经有登录模块了,不过是shaderSDK的,考虑到国内这些插件会对数据动手脚,只有换掉了. 回到正题,接入的过程还是遇到不少问题,先整理下我的资料,以下 ...
最新文章
- POJ 3347 Kadj Squares(复杂的线段相交问题)
- mysql同步binlog_利用MySQL的Binlog实现数据同步与订阅(下)
- pyqt5讲解4:QDialog,QMessageBox,QInputDialog,QFontDialog,QFileDialog
- EF架构~了解一下,ADO.NET Entity Framework
- 程序员们的三高:高并发、高性能、高可用
- Leetcode--96. 不同的二叉搜索树(java)
- 常见特征检测算法介绍
- 看这篇就够了!一文读懂拜占庭将军问题
- outlook qr码在哪里_胡志明市第一次将QR码附加在街道名称板上,目的是什么?
- ubuntu MySQL的卸载
- Angular2.x
- php编网页版计算器,php编程实现简单的网页版计算器功能
- seo具体怎么优化-优化SEO的方法
- mysql分组取最新一条数据
- 『Photo Shop实用技巧』之 去除红眼
- color constancy dataset(白平衡仿真数据集)
- 3.Maven 常用命令
- Jasper导出excel
- 计算机操作系统期末复习,《计算机操作系统》期末复习课稿.docx
- OpenWrt开发者沙龙:立方体CEO何铮演讲
热门文章
- BIRT参数设置详解
- Quality Assessment Paper List(研二)
- 前端面试题 —— 浏览器原理(一)
- Linux FTP服务器架构
- 测试基础——测试分类和测试方法
- php sequelize,Sequelize中用group by进行分组聚合查询
- java统计 pv uv_PV UV QPS 并发数
- 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。
- 代理模式:aspectj静态代理和jdk,cglib的动态代理的对比
- 《计算机网络 自顶向下方法》读书笔记 第7章 无线网络和移动网络