本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前言:因为之前做的项目中需要接入Facebook登录,所以为大家带来Facebook的eclipse版本。在这里简单具体说一下接入的过程中的一些问题和注意的事项,希望为大家解决一些遇到的问题和坑、坑、坑、坑、、、、、
首先,废话不多说,先上效果图:
首先去Facebook官网上下载最新的SDK:
- 我这里使用facebook 3.0版本的SDK实现的(个人觉得3.0的就已经ok了,没必要用最新的):
facebook 3.0 SDK下载链接:
download.csdn.net/download/qq… - 如果你安装了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:
download.csdn.net/download/qq…
demo的完整代码:
download.csdn.net/download/qq…
希望大家多多支持,另外再祝愿大家在接入过程中不遇到bug;