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

前言:因为之前做的项目中需要接入Facebook登录,所以为大家带来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"));
			}

所有的代码就是这些;下来分析一下具体的代码意思:

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;

Guess you like

Origin blog.csdn.net/qq_35840038/article/details/78457711