FacebookAccountKit接入

FacebookAccountKit接入

需求要接入FacebookAccountKit登录,整理了接入过程(需准备Facebook账号)附链接地址,用的是Facebook的原生页面,没有自定义, FacebookAccountKit手机号不需要绑定Facebook账号。https://developers.facebook.com/docs/accountkit/android

1. 选择应用或新建应用
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
2. 选择您的应用设置
接入FacebookAccountKit产品到自己的app项目

3. 导入 Account Kit SDK
项目目录下gradle文件添加

repositories {
  jcenter()
}

modle目录下gradle文件添加

dependencies {
  implementation 'com.facebook.android:account-kit-sdk:4.+'
}

4.添加 XML 字符串并编辑 Manifest 清单
strings.xml 文件

<string name="app_name">[AppName]</string>
<string name="FACEBOOK_APP_ID">应用编号</string>
<string name="ACCOUNT_KIT_CLIENT_TOKEN">[Account Kit 客户端口令]</string>

清单文件权限配置

<uses-permission android:name="android.permission.INTERNET"/>

<meta-data android:name="com.facebook.accountkit.ApplicationName"
           android:value="@string/app_name" />
<meta-data android:name="com.facebook.sdk.ApplicationId"
           android:value="@string/FACEBOOK_APP_ID" />
<meta-data android:name="com.facebook.accountkit.ClientToken"
           android:value="@string/ACCOUNT_KIT_CLIENT_TOKEN" />

<activity
  android:name="com.facebook.accountkit.ui.AccountKitActivity" />

定义 AccountKitActivity,允许它在应用中启用。 如果您使用高级 UI 自定义元素,还应向 AccountKitActivity 添加@style/AppLoginTheme 和 android:theme,以自定义 UI 的配色方案

<activity
  android:name="com.facebook.accountkit.ui.AccountKitActivity"
  android:theme="@style/AppLoginTheme"
  tools:replace="android:theme" />

确保 @style/AppLoginTheme 继承自 Theme.AccountKit。 如果想为您的 Account Kit 应用禁用应用事件,应向 AndroidManifest.xml 文件添加以下内容:

<meta-data android:name="com.facebook.accountkit.FacebookAppEventsEnabled"
           android:value="false"/>

5.添加开发和发布密钥散列

首先获取OpenSSL工具https://code.google.com/p/openssl-for-windows/downloads/list
我的做法是解压到C盘根目录在这里插入图片描述
debug.keystore默认路径:C:\Users\xxx\.android
默认密码:android

生成开发密钥散列,此处只讲 Windows 环境,运行以下命令:

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

%HOMEPATH%:keystore路径
此命令将针对您的开发环境生成一个包含 28 个字符的唯一密钥散列。将其复制粘贴到下面的字段中。对于参与应用开发的每个人的开发环境,您必须分别提供开发密钥散列。

生成发布密钥散列
要生成发布密钥散列,运行以下命令,并替换您的发布密钥别名和 keystore 路径:

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64

6.检查当前的会话
应用面板中的启用客户端访问口令流程开关为“开”,应该检查当前是否存在有效的口令:

import com.facebook.accountkit.AccountKit;
import com.facebook.accountkit.AccessToken;

AccessToken accessToken = AccountKit.getCurrentAccessToken();

if (accessToken != null) {
//Handle Returning User
} else {
//Handle new or logged out user
}

7.开始短信登录流程
调起Facebook API

public void phoneLogin() {
      final Intent intent = new Intent(this, AccountKitActivity.class);
      String[] countryList = new String[]{"CN", "ID"};//设置支持国家
      AccountKitConfiguration.AccountKitConfigurationBuilder configurationBuilder =
              new AccountKitConfiguration.AccountKitConfigurationBuilder(
                      LoginType.PHONE,//登陆类型:手机短信类型(两种类型可选PHONE/EMAIL)
                      AccountKitActivity.ResponseType.CODE)// 务必设置与 Facebook 开发者门户网站面板中的应用授权设置相匹配的 AccountKitActivity.ResponseType:
                      // 如果应用面板的启用客户端访问口令流程开关设置为“开”,则指定为TOKEN,如果设置为“关”,则指定为 CODE
                      .setUIManager(new BaseUIManager(R.style.AppLoginTheme))//自定义属性
                      .setSMSWhitelist(countryList)
                      .setDefaultCountryCode("ID");//(可选)设置短信登录流程中默认显示的国家/地区代码);
      // ... perform additional configuration ...
      intent.putExtra(
              AccountKitActivity.ACCOUNT_KIT_ACTIVITY_CONFIGURATION,
              configurationBuilder.build());
      startActivityForResult(intent, APP_REQUEST_CODE);
  }

回调

@Override
  protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      if (resultCode != RESULT_OK) {
          return;
      }
      if (requestCode == APP_REQUEST_CODE) { // confirm that this response matches your request
          AccountKitLoginResult loginResult = data.getParcelableExtra(AccountKitLoginResult.RESULT_KEY);
          String toastMessage;
          if (loginResult.getError() != null) {
              toastMessage = loginResult.getError().getErrorType().getMessage();
              showErrorActivity(loginResult.getError());
          } else if (loginResult.wasCancelled()) {
              toastMessage = "Login Cancelled";
          } else {
              if (loginResult.getAccessToken() != null) {
                  toastMessage = "Success:" + loginResult.getAccessToken().getAccountId();
              } else {
                  toastMessage = String.format("Success:%s...", loginResult.getAuthorizationCode().substring(0, 10));
              }

              // If you have an authorization code, retrieve it from
              // loginResult.getAuthorizationCode()
              // and pass it to your server and exchange it for an access token.

              // Success! Start your next activity...
              goToMyLoggedInActivity(loginResult.getAuthorizationCode());
          }

          // Surface the result to your user in an appropriate way.
          Toast.makeText(this, toastMessage, Toast.LENGTH_LONG).show();
      }
  }

最后设置截图
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值