目录
前言
准备
开始
总结
预告
前言
? ? ? ? 在国内做facebook,google登录或者支付还是有些麻烦的。首先要有梯子,然后还要一堆复杂的配置。最后测试起来还有一堆坑在等着你。对比起来,国内支付宝微信的登录支付就简单多了。
准备
- 可以访问外网的环境
- 注册facebook开发账号,Facebook 开发者
- 创建应用,做各种配置(重点要配置获取信息的权限,测试账号)
- 手机上下载一个facebook客户端,我们应用会调起
开始
? ? ? ? 到这里你应该是创建好应用了,点击你的应用进入应用首页,找到左侧有个登录选项,点击快速登录
? ? ? ? ?然后选择android,开始集成流程:
? ? ? ? ?大概看一下,总共10步,我们来看一下步骤:
- 第一、二步是sdk集成,第一步是下载到本地集成,第二步是直接配置依赖。
- 第三步是填入你的app包名和你拉起登录的activity的全路径
- 第四步比较重要,也是大部分人遇到问题的地方,这里配置出错,登录时将会报错,我的报错信息是:将你登入到此应用程序时出错,请稍后再试。具体可以参考我另一篇文章(第三个问题解决):Android FaceBook登录问题记录
- 第五步看需求,第六步直接cv,第七步看需求,第8步看需求,我用的是自定义的按钮,第九步和第十步直接参考代码来写
? ? ? ? ?这里列一下登录的流程代码:
//1.创建CallbackManager,接收登录回调信息
callbackManager = CallbackManager.Factory.create();
//2.注册登录监听
//如果你使用的是facebook sdk 提供的登录按钮:
loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions("email");
// If using in a fragment
loginButton.setFragment(this);
// Callback registration
loginButton.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
}
});
//如果你使用自定义按钮
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
}
});
//3.检查登录状态
AccessToken accessToken = AccessToken.getCurrentAccessToken();
boolean isLoggedIn = accessToken != null && !accessToken.isExpired();
//4.发起登录
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));
//这里public_profile表示你想要获取的权限,你也可以这样写
//LoginManager.getInstance().logInWithReadPermissions(this, //Arrays.asList("public_profile","email","user_photos));
//public_profile:允许应用在用户节点中读取默认公开资料字段。系统将自动向所有应用授予此权限。
//email:允许您的应用读取用户的首选邮箱。
//user_photos:允许您的应用读取用户上传到 Facebook 的照片。
//这里也是容易出现问题的地方,我们想要这些权限必须先在facebook应用首页-应用审核-权限和功能中将申请这些权限的高级访问权限才能使用,具体可参考(问题2):
//https://blog.csdn.net/baidu_38627723/article/details/120438988?spm=1001.2014.3001.5501
//5.在onActivityResult中接收登录回调,并转交给callbackManager处理
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
callbackManager.onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
}
//6.然后再第2步注册监听的地方会获取登录信息:如果成功会获取到LoginResult,可以拿到token交给服务器验证
//7.登出
LoginManager.getInstance().logInWithReadPermissions(activity, arrayListOf("public_profile"))
????????如果还需要集成Facebook的其他功能,如分享,应用连接等功能,可以参考:
facebook-android-sdkhttps://github.com/facebook/facebook-android-sdk
总结
? ? ? ? 以上即是本篇的全部内容,如有疑问和错误,欢迎评论指出,谢谢。
预告
? ? ? ? ?之后会继续推出Google,支付宝,微信等第三方登录,支付的文章。
|