Facebook三方登录

Facebook三方登录

Facebook三方登录,是用于获取Facebook账号的基本信息,如头像、别名、手机号码等,通过获取到的信息去自身平台注册对应账号,方便用户的注册。

[TOC]

集成准备

1.创建Facebook应用

Facebook应用创建.png
应用信息填写.png

2.应用配置信息

补充应用信息.png
包名、类名填写

功能实现

1.配置仓库

// project/bulid.gradle:
allprojects {
    repositories {  
        jcenter()
    }
}

// app/bulid.gradle:
implementation 'com.facebook.android:facebook-login:[5,6)'

2.清单文件和资源

//网络权限
<uses-permission android:name="android.permission.INTERNET"/>
//配置facebookId,可查看应用id填写
<meta-data
     android:name="com.facebook.sdk.ApplicationId"
     android:value="@string/facebook_app_id" />

//配置对应的FacebookActivity,用于登录跳转Facebook应用
<activity
     android:name="com.facebook.FacebookActivity"
     android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
     android:label="@string/app_name" />
//配置无安装Facebook时,网页跳转界面
<activity
     android:name="com.facebook.CustomTabActivity"
     android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="@string/fb_login_protocol_scheme" />
    </intent-filter>
</activity>

//资源文件中进行配置
<string name="facebook_app_id">299548570997514</string> 
<string name="fb_login_protocol_scheme">fb299548570997514</string>

3.获取散列密钥并配置

工具类地址:https://code.google.com/archive/p/openssl-for-windows/downloads

keytool -exportcert -alias name(key的别名) -keystore C:\Users\Administrator\Desktop\key\key_name.jks(key的实际路径) | 
E:\download\openssl-0.9.8k_X64\bin\openssl(工具的绝对路径) sha1 -binary |  
E:\download\openssl-0.9.8k_X64\bin\openssl base64

//命令执行成功以后会要求输入密码,最终生成32位的随机码,需要把这些随机码作为散列密钥配置到Facebook中

//用于配置debug的时候,也使用签名key进行应用签名
signingConfigs {
    release {
        v2SigningEnabled true
    }

    debug {
        //别名
        keyAlias 'name' 
        //key密码
        keyPassword 'pw123'
        //key路径
        storeFile file('F:\\name.jks')
        //本机密码
        storePassword 'storepw123'
    }
}

4.解决google play二次签名

1.登录你的google play应用获取sha-1


image.png

2.使用git bash,git提交工具,如果没有安装搜索git安装。之后右键桌面,找到git bash选项,输入指令
echo “你的sha-1” | xxd -r -p | openssl base64


image.png

最后会得到如图所示的一串24为字符,输入填写到facebook的key dashs中就可以完美解决登录问题

5.代码实现

Application

FacebookSdk.sdkInitialize(getApplicationContext());

Actvitity

//在Activity的onCreate时对CallbackManager进行初始化
CallbackManager mCallbackManager = CallbackManager.Factory.create();

//设置对应的回调监听
LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(LoginResult loginResult) {
        LogUtil.d(TAG,"onSuccess-------------");
        showLoading(true);
        //成功以后去获取对应的Facebook账号信息
        getFacebookInfo(loginResult.getAccessToken());
    }

    @Override
    public void onCancel() {
        // App code
        LogUtil.d(TAG,"onCancel-------------");
    }

    @Override
    public void onError(FacebookException exception) {
        LogUtil.d(TAG, exception.toString());
        //如果是因为Facebook本身的鉴权问题,同时获取到token,则需要主动登出,防止重试无法登录
        if (exception instanceof FacebookAuthorizationException) {
            if (AccessToken.getCurrentAccessToken() != null) {
                LoginManager.getInstance().logOut();
            }
        }
    }
});

//配置回调,所有回调信息都会在mCallbackManager中
 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    mCallbackManager.onActivityResult(requestCode, resultCode, data);
}

//登录按钮点击事件调用代码
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));

//获取Facebook用户信息,根据key值去获取,再执行平台的登录操作
public void getFacebookInfo(AccessToken accessToken) {
    GraphRequest.newMeRequest(accessToken, (object, response) -> {
        if (object != null) {
            thirdPartyNickName = object.optString("name");
            thirdPartyUserName = object.optString("id");
          
            //go Login 
            ...
        }else {
            //fail
            showLoading(false);
            XMToastUtil.showShortToast(PadLoginActivity.this, getString(R.string.dialog_login_facebook_fail));
        }
    }).executeAsync();
}

功能校验

1.集成校验

如果点击登录按钮,Facebook应用或者网页有对应的加载框,并含有Facebook的logo图标,代码代码集成是没问题的。

2.整体校验

若遇到无法登录的情况,那必然是密钥的配置存在问题,密钥库请使用最新的库,并且校验使用的key值是否为正式key,debug调试配置的key是否也是一致的。有的手机配置错误会提示密钥散列库中不匹配,同时会把需要配置的密钥显示出来。如若key的配置是正确的,那么可以在log日志中查看到对应的错误提示。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容

  • ios集成facebook三方登录需要pc端墙外环境在开放平台注册APP信息,以及手机端的墙外环境测试登录流程,主...
    miG92阅读 2,116评论 0 0
  • faceBook 三方登录遇到坑,当你按照步骤一步一步完成后没测试时,授权的网页显示让你授权(如果你已经授权)则提...
    Someone_Joker阅读 1,805评论 0 2
  • 无题 文/舟亮 昨宵风冷露凝霜, 喜鹊高飞向暖阳。 淡月一弯心若洗, 静居幽谷觅禅床。
    舟亮阅读 323评论 0 0
  • 在我大学之前,我从未想过说考驾照,因为感觉自己四肢发达头脑简单。 在2017年暑假被爸妈强制报班去考驾照,我至今都...
    先生姓张l阅读 86评论 0 0
  • 这一篇我们分享一下关于客房的装饰,客户设计的时候同样考虑的也是空间感和实用性,首先在和床和衣柜这一块我们利用到了飘...
    sunnyhe阅读 562评论 0 0