(自备科学上网工具)参考官方文档facebook sdk文档(登陆)
正式步骤如下:
首先来到Facebook的开发者官网facebook 开发者平台
在这里我们可以创建一个项目或者使用已创建好的项目进行下一步
然后在产品里选择自己想要加入的功能,包括登录或者统计分析等功能
然后开始导入sdk,从sdk文档里的第三步直接开始即可,在第六步添加密钥时建议同时添加开发密钥跟发布密钥,如果密钥不对,可通过以下代码获取
try {
PackageInfo info = getPackageManager().getPackageInfo(
"{your-package-name}", //Insert your own package name.
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
单点登录可忽略,接下来是设置相关的点击事件,如果嫌fb自带的按钮不好看,可自己随便写个Button,自带的按钮实现起来比较简单,所以只介绍自定义的按钮怎么实现登录功能
首先注册一个回调:
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});
检查登录的状态:
AccessToken accessToken = AccessToken.getCurrentAccessToken();
boolean isLoggedIn = accessToken != null && !accessToken.isExpired();
如果没有登录,调用以下这行代码即可登录
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));
在activity的回调里,将页面的回调传给自己自定义的那个回调,就完成了整个流程
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
callbackManager.onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
}