准备工作:

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开发者平台。

4.       点击

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里面的其他例子。

在Android上实现使用Facebook登录(基于Facebook SDK 3.5)的更多相关文章

  1. 通过输入方式在Android上进行微博OAuth登录

    在微博认证方式里,基本的OAuth认证是必须要调整到跳转到第三方页面上进行授权的,例如下面的例子:     1.从http://open.weibo.com/wiki/index.php/SDK#An ...

  2. android上的JAVA8:使用retrolambda

    android上的JAVA8:使用retrolambda posted by juuda 2015年6月3日 下午7:33 under Android Java8引入了lambda表达式,让许多开发者 ...

  3. android应用集成facebook登录

      之前都是做国内的应用开发,没有用过国外的三方登录,比如谷歌登录.facebok登录,最近参与了一个海外的支付相关的项目,调研了一下谷歌登录和facebook登录,其实调研之后觉得也是很简单的,尤其 ...

  4. Android平台接入Facebook登录

    官方教程地址: https://developers.facebook.com/docs/android/getting-started 开发环境为Android Studio,官方要求SDK最低版本 ...

  5. Android 版 Facebook 登录

    Android 版 Facebook SDK 让用户可以通过 Facebook 登录注册您的应用.通过 Facebook 登录您的应用时,用户可以向应用授予权限,以便您可以检索信息或以用户的身份在 F ...

  6. Android 应用程序集成FaceBook 登录及二次封装

    1.首先在Facebook 开发者平台注册一个账号 https://developers.facebook.com/ 开发者后台  https://developers.facebook.com/ap ...

  7. Android上掌纹识别第一步:基于OpenCV的6种肤色分割 源码和效果图

    Android上掌纹识别第一步:基于OpenCV的6种肤色分割 源码和效果图 分类: OpenCV图像处理2013-02-21 21:35 6459人阅读 评论(8) 收藏 举报   原文链接  ht ...

  8. Android上HDMI介绍(基于高通平台)

    本文重点针对HDMI在android上的应用,而比较相关的就是overlay机制.overlay在这里只是简单的介绍,后续会有文章再专门详述. 我没记错的话,高通从7X30开始,平台就可以支持HDMI ...

  9. 在Android App中集成Google登录

    技术文章 来源:码农网 发布:2016-09-19 浏览:194 摘要:今天,几乎所有的web和移动app都自带谷歌和Facebook登录,这对app开发者和用户来说是一个非常有用的功能,因为几乎每个 ...

随机推荐

  1. Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound

    今天查看网站的源代码,发现有个glyphicons-halflings-regular.woff文件没有找到,因为我的网站使用了bootstrap的Glyphicons 字体图标,因此需要加载Glyp ...

  2. JS 问题集锦

    [1]js页面跳转 和 js打开新窗口方法 第一种: <script language="javascript" type="text/javascript&quo ...

  3. MVC-通过对象获取整个表单内容

    -------- 在MVC的Controller(控制器)里面定义相同的方法时,我们需要解决重载问题: 解决方案一:在参数中定义一个FormCollection类型,解决问题 [HttpSet] pu ...

  4. 1019mysql 复制技术

    -- 第一步实现主从复制参照 http://369369.blog.51cto.com/319630/790921/核心点 :开启二进制日子和服务器ID,创建复制账号,配置连接主从服务器,查看各自状态 ...

  5. 基于tiny4412原生uboot修改制作SD启动并烧写到emmc

    最近入手tiny4412的标准板,底板SDK型号为1506.但是因为友善之臂提供的superboot不能进入boot菜单,此时我就不能通过tftp下载内核和通过nfs挂载根文件系统,于是想自己做个ub ...

  6. jQuery鼠标悬停内容动画切换效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. [转]Hibernate查询对象所有字段,单个字段 ,几个字段取值的问题

    原文地址:http://www.ablanxue.com/prone_3552_1.html 1. 查询整个映射对象所有字段 Java代码 //直接from查询出来的是一个映射对象,即:查询整个映射对 ...

  8. hoj2662 状态压缩dp

    Pieces Assignment My Tags   (Edit)   Source : zhouguyue   Time limit : 1 sec   Memory limit : 64 M S ...

  9. 微信扫码支付 php

    仔细看了一遍官方的那幅流程图,我来简化理解一下(注意:我这里针对的是扫码支付模式一,模式二没什么说的)网站后台生成二维码,当然是跟据前台传来的参数有条件的生成买家扫描二维码,扫描过程中,微信后台系统回 ...

  10. sql-将一个表中的数导入另一个表中

    1.如果2张表的字段一致,并且希望插入全部数据 可以用这种方法: INSERT INTO 目标表 SELECT * FROM 来源表;例: insert into insertTest select ...