首先请阅读官方的sdk,https://developers.facebook.com/docs/ 我下面主要是写一点儿自己遇到的问题。
昨天开始拿到Facebook的sdk,并开始去准备接入。文档都是E文,看着实在蛋疼,不过即便如此,也得仔细阅读,不能怕麻烦。实际上官方已经尽可能的帮我们把工作简化了。
先说一下准备条件:
1、首先你得有一个FB的账户,并且在开发人员的选项填写该填的东西。
2、sdk里面有sdk的源码,需要在eclipse当中导入该工程,并在你的工程中引用该源码为库--当然,你也可以把源码对应的bin里面的jar包拿出来放到你的工程当中的libs文件夹作为依赖库,这里官方的sdk的介绍也比较清楚,稍候我附上链接。
##关于sample工程这里的工程
除了涉及到登录认证的案例项目(比如SessionLogin)是需要一个安全机制来保护数据的安全性的,所以需要在开发者帐号当中需要填写一个hash值,这个值是根据你本机上面Android sdk里面的debug.keystore生成的,请注意不要简单的复制官方文档里面命令,因为里面的%HOMEPATH%在你的电脑上不一定是你的sdk目录。
比如我在cmd当中输入了这样的命令,那么之前要先做几件事情:
keytool -exportcert -alias androiddebugkey -keystore %ANDROID_SDK_HOME%\.android\debug.keystore | openssl sha1 -binary | openssl base64
----首先keytool的路径必须为系统可以检索的路径,也就要放到path当中
----ANDROID_SDK_HOME是我的系统变量,指向了Android sdk的目录
这个hash值可以有很多个,而且粘贴的时候一定要让他变成一个蓝色的框,框的最后有一个X点击可以删除。(一个国外的哥们在stackoverflow上面还特意提醒别人这个问题)
我在这里都填写好以后,结果还是报了一个错误说hash不匹配,错误信息如下:
com.facebook.FacebookAuthorizationException: UnknownError: ApiException:Key hash UnQJpMvXOu7p5YU6aASrEfgcgbk does not match any stored key hashes.
这个问题很奇怪,google了一下遇到这个问题的人原因也是千奇百怪。我到现在也没有搞明白,只是换了个帐号,把hash贴上去以后就搞定了。当然,在你自己的app当中,要注意appid和hash的值的对应,实际上那样的情况下,要使用release的keystore
Facebook的第三方登录提供了跳转web的方式,以及sso的方式,不过sdk当中已经处理好了,也不用我们操作。