Android 实现第三方Facebook登录的具体实现

来源:互联网 发布:网络直播的特点 编辑:程序博客网 时间:2024/05/20 16:00

前言:因为之前做的项目中需要接入世界上最大的社交软件(哈哈哈)Facebook登录,并且Facebook的官方文档竟然是Android Studio的版本,这个对于我们用eclipse的大佬来说,简直就是侮辱。但是只要是空气能到的地方,有人就可以去,而我就是那个人。所以为大家带来Facebook的eclipse版本。在这里简单具体说一下接入的过程中的一些问题和注意的事项,希望为大家解决一些遇到的问题和坑、坑、坑、坑、、、、、

首先,废话不多说,先上效果图:

gif

首先去Facebook官网上下载最新的SDK:

  1. 我这里使用facebook 3.0版本的SDK实现的(个人觉得3.0的就已经ok了,没必要用最新的):
    facebook 3.0 SDK下载链接:
    http://download.csdn.net/download/qq_35840038/10105916
  2. 如果你安装了facebook的话,运行之后会直接打开facebook,如果没有安装,会打开web版的facebook的登录页面,下来就贴代码了:
  FacebookSdk.sdkInitialize(getApplicationContext());                callbackManager = CallbackManager.Factory.create();                LoginManager.getInstance().registerCallback(callbackManager,                        new FacebookCallback<LoginResult>() {                            @SuppressWarnings("deprecation")                            @Override                            public void onCancel() {                                // TODO Auto-generated method stub                                System.out.println("onCancel-------------");                                CookieSyncManager                                        .createInstance(MainActivity.this);                                CookieManager cookieManager = CookieManager                                        .getInstance();                                cookieManager.removeAllCookie();                                CookieSyncManager.getInstance().sync();                            }                            @Override                            public void onError(FacebookException arg0) {                                // TODO Auto-generated method stub                                System.out                                        .println("FacebookException-------------");                            }                            @Override                            public void onSuccess(LoginResult arg0) {                                // TODO Auto-generated method stub                                System.out                                        .println("LoginResult!!!!!!!!!!-------------"                                                + "登录成功");                            }                        });                LoginManager.getInstance().logInWithReadPermissions(                        MainActivity.this, Arrays.asList("public_profile"));            }

所有的代码就是这些;很吃惊吧,可能会有人说,Facebook的文档中代码是辣么多辣么多的,你这怎么这么少?不错,fb的文档中确实是多,但是这就是eclipse版的所有代码了。下来分析一下具体的代码意思:

1.第一块就是初始化了,看注释就很明白了,初始化并创建回调器:

@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化Facebook的SDK        FacebookSdk.sdkInitialize(getApplicationContext());        //创建回调管理器,以便处理登录响应        callbackManager = CallbackManager.Factory.create();     }
 当然,这个也可以根据实际情况来初始化,看个人情况哦!

2.第二块在初始化之后就该进入正题了,调用接口来登录了:

LoginManager.getInstance().registerCallback(callbackManager,                        new FacebookCallback<LoginResult>() {                            @SuppressWarnings("deprecation")                            @Override                            public void onCancel() {                                // TODO Auto-generated method stub                                System.out.println("onCancel-------------");                                CookieSyncManager                                        .createInstance(MainActivity.this);                                CookieManager cookieManager = CookieManager                                        .getInstance();                                cookieManager.removeAllCookie();                                CookieSyncManager.getInstance().sync();                            }                            @Override                            public void onError(FacebookException arg0) {                                // TODO Auto-generated method stub                                System.out                                        .println("FacebookException-------------");                            }                            @Override                            public void onSuccess(LoginResult arg0) {                                // TODO Auto-generated method stub                                System.out                                        .println("LoginResult!!!!!!!!!!-------------"                                                + "登录成功");                            }                        });
这个就是为登录在这里注册一个回调,当登录之后就会回调到这里!!

3.作为执行实际登录,例如在自定义按钮的 OnClickListener 中:

LoginManager.getInstance().logInWithReadPermissions(                        MainActivity.this, Arrays.asList("public_profile"));
这行代码是我们的自定义登录按钮需要执行的。

4.获取登录后的数据:

@Override    protected void onActivityResult(final int requestCode,             final int resultCode, final Intent data) {       super.onActivityResult(requestCode, resultCode, data);       callbackManager.onActivityResult(requestCode, resultCode, data);   }
这里就是在登录成功后,将登录成功的将结果传递至 CallbackManager

5.配置文件:

因为是联网的,所以不能少了网络权限:
<uses-permission android:name="android.permission.INTERNET" />
还有Facebook的官方界面activity:
<activity            android:name="com.facebook.FacebookActivity"            android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"            android:label="@string/app_name"            android:theme="@android:style/Theme.Translucent.NoTitleBar" />        <meta-data            android:name="com.facebook.sdk.ApplicationId"            android:value="@string/facebook_app_id" />
注意:这里的facebook_ID是需要去Facebook开发者后台获取。

到这里,整个Facebook的登录就已经接入完成了。整个过程很简单,也很明白,希望为大家提供一些帮助,如果有疑问,大家可以留言,我会尽力解决大家的困扰。

顺便附上做好的demo:
http://download.csdn.net/download/qq_35840038/10106010

demo的完整代码:
http://download.csdn.net/download/qq_35840038/10106023

希望大家多多支持,另外再祝愿大家在接入过程中不遇到bug;

原创粉丝点击