目录

前言

准备

开始

总结

预告


前言

        在国内做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,支付宝,微信等第三方登录,支付的文章。

Logo

智屏生态联盟致力于大屏生态发展,利用大屏快应用技术降低开发者开发、发布大屏应用门槛

更多推荐