在Android上实现使用Facebook登录(基于Facebook SDK 3.5)
准备工作:
1. Facebook帐号,国内开发者需要一个vpn帐号(网页可以浏览,手机可以访问)
2. 使用Facebook的SDK做应用需要一个Key Hashes值。
2.1 首先要有你的项目的签名文件
2.2 然后到http://gnuwin32.sourceforge.net/packages/openssl.htm下载 OpenSSL for Windows的Binaries版本,其他操作系统可以到http://www.openssl.org 的官网查找下载相应的OpenSSL。
2.3 下载完解压,找到bin目录下的openssl.exe放到你认为很方便的路径便于操作,例如我直接放在C盘,则路径为C:\openssl.exe,再将你的项目签名文件(签名文件名称不能有空格,只能是英文和数字)放在相同目录下。打开CMD后台,输入一下内容:
keytool -exportcert -alias -keystore | openssl sha1 -binary | openssl base64
例如我放的是Windows下的C盘,所以我要输入的是:
keytool -exportcert -alias androiddebugkey(随便你写) -keystore c:\签名文件名称 | c:\openssl sha1 -binary | c:\openssl base64
按下回车,就出一行base64的数组,这就是所谓的Key Hashes将这行数字复制好保存。有人认为可以先用debugkey的签名先生成一个Key Hashes这样不会影响测试,但事实上,直接用签名文件生成Key Hashes在调试的时候并没有任何异常,所以我觉得用debugkey再做一个Key Hashes有点多此一举。
3. 登入https://developers.facebook.com Facebook开发者平台。
5. 进入 Android SDK网页,
点击 下载最新版本SDK。解压后,将SDK目录下的文件夹facebook导入eclipse项目中。如果想查看SDK给的例子,可以将SDK目录下的samples里面的任意项目导入eclipse中。在导入后,要在该项目的Properties属性中点击Android,在下面的Library中添加以facebook项目作为代码库。如图:
导入完成,国内的手机上连接好vpn则可以访问Facebook。
6. Facebook开发者平台https://developers.facebook.com/创建自己的应用,点击网页置顶菜单栏的Apps,进入创建页面。右上角有一个“建立新的应用程式”。
填写好对应的是:
应用名称(这个名称会在分享的时候显示来自XX分享)
应用域名空间(类似C#那种程序需要,可选):Android应用不需要写。
应用类别(要创建的应用属于什么类型)
填写完后点击“继续”。
7. 出现以下界面
需要将App ID记录下,将基本资料的Sandbox设置为关闭。移动到下面有一个“Native Android App”,打勾。然后按照上面的要求填写信息。
对应是:
项目包名
项目启动的第一个类名或者主界面类名
Key Hash(准备工作2中有提到)
FaceBook登入名称:开启
深度链接:开启
填写完毕点击“储存资料”提交,一会你会发现app的状态会显示为绿色点表示可用。
8. 再看到左边导航有个App Details,按需要填写好资料,再点击储存更改,最后在点击页面最上面的“Submbit App Detail Page”。这样就全部设置完毕。
9. 再看自己的项目所引用的系统库是不是高于Android2.2(包括2.2),因为Facebook SDK 3.5对系统要求是2.2以上。保证在Eclipse中的Facebook项目和自己的项目两个项目的系统版本是一致的。如果你的项目中引用了android-support-v4.jar,请将你项目中的这个包删除,另外Facebook项目中的对string.xml这个资源文件进行了国际化,如果你的项目并没有对这些语言需要做翻译则可以把Facebook项目的这些values文件夹删除了。这个第9点非常重要,不然会导致编译不过去,产生了两个dex2.jar或者会引起自己项目的R文件丢失。在使用Facebook开发是会出现两个R文件,一个是自己的项目的,一个是来自Facebook的。
10. 在自己的项目中string.xml中添加一个app_id的key,值为申请好Facebook给的App ID。在AndroidMainfest.xml中的标签下添加以下内容。
<meta-dataandroid:name="com.facebook.sdk.ApplicationId"android:value="@string/app_id"/>
<activity android:name="com.facebook.LoginActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
并且注意添加网络访问权限:
<uses-permissionandroid:name="android.permission.INTERNET" />
下面开始做使用Facebook登录
1. Facebook 好像是SDK 3.0开始登录是需要用Facebook自带的LoginButton,在布局中间中添加如下:
<com.facebook.widget.LoginButton
android:id="@+id/login_fb"
android:layout_width="100dp"
android:layout_height="50dp"
facebook:confirm_logout="false"
facebook:fetch_user_info="true"
/>
可以自己设置它的的大小,它本身自带有图片和文字,如果不想用它的图片和文字,要用自己的图片可以在代码中修改:
facebookLogin.setTextColor(Color.TRANSPARENT);
facebookLogin.setCompoundDrawablesWithIntrinsicBounds(0,0,0,0);
facebookLogin.setBackgroundResource(R.drawable.login_fb);
2. 在Activity中添加对这个按钮的所触发的事件进行处理:
facebookLogin.setUserInfoChangedCallback(new LoginButton.UserInfoChangedCallback() {
@Override
public void onUserInfoFetched(GraphUser user) {
uiHelper = new UiLifecycleHelper(this, callback);
//这个是回调用的辅助工具可以在这个callback上做一些处理
updateUI();
}
});
private void updateUI() {
Session session = Session.getActiveSession();
boolean enableButtons = (session != null && session.isOpened());
if (enableButtons && user != null) {
//在这里可以获取到用Facebook登录的用户user,通过user.getXX可以获取到你想要的信息。也就是在使用Facebook登录后的一些跳转处理
}
}
以上是主要的代码部分,详细的可以参考SDK的HelloFacebookSample项目,这个项目最常用的东西已经包含在里面,其他功能可以再看看samples里面的其他例子。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。