cloudbase_auth 0.0.3

  • Readme
  • Changelog
  • Installing
  • 67

cloudbase_auth #

Pub

cloudbase_auth 为 CloudBase Flutter SDK plugin 之一,提供了在 Flutter 项目中调用 CloudBase 登录的能力,其他CloudBase能力需要登录后才能使用。

目前 Cloudbase Flutter 支持的登录方式有:

  • 微信授权登录(微信开放平台的移动应用授权)
  • 自定义登录
  • 匿名登录

开发者需要在初始化资源后即调用登录授权方法,登录成功后即可调用 CloudBase Flutter 提供的功能插件。

  • 安装
  • 获取登录对象
  • 获取登录状态
  • [微信授权登录] (#微信授权登录)
  • [自定义登录] (#自定义登录)
  • [匿名登录] (#匿名登录)
  • [获取用户信息] (#获取用户信息)
  • [退出登录] (#退出登录)

安装 #

在 flutter 项目的 pubspec.yaml 文件的 dependencies 中添加

dependencies:
  cloudbase_core: ^0.0.2
  cloudbase_auth: ^0.0.2

获取登录对象 #

示例代码 #

import 'package:cloudbase_core/cloudbase_core.dart';
import 'package:cloudbase_auth/cloudbase_auth.dart';

// 初始化
CloudBaseCore core = CloudBaseCore.init({
    'env': 'xxx'
});

// 获取登录对象
CloudBaseAuth auth = CloudBaseAuth(core);

获取登录状态 #

开发者可以通过 getAuthState() 来获取当前的登录状态,调用 getAuthState() 后,SDK 会识别本地是否有登录状态,如果有,则会尝试刷新登录状态,若刷新登录状态成功,则会返回新的登录状态,否则返回 null

请求参数 #

示例代码 #

import 'package:cloudbase_core/cloudbase_core.dart';
import 'package:cloudbase_auth/cloudbase_auth.dart';

// 初始化
CloudBaseCore core = CloudBaseCore.init({
    'env': 'xxx'
});

// 获取登录对象
CloudBaseAuth auth = CloudBaseAuth(core);

// 获取登录状态
await auth.getAuthState().then((authState) {
    if (authState != null) {
        // 登录态有效
    } else {
        // 没有登录态,或者登录态已经失效
    }
})

微信授权登录 #

申请和绑定微信 Appid #

[1] 请到 微信开放平台 进行登记,登记并选择移动应用进行设置后,将该应用提交审核,审核通过后获得 Appid

[2] 在 云开发控制台 绑定微信开放平台的 Appid ,并启动该登录方式。

添加 Android 配置 #

[1] 在 微信开放平台-管理中心-应用详情 配置Android开发信息: 包名和应用签名。

应用签名可以使用微信开放平台提供的 签名生成工具

[2] 在你的包名相应目录下新建一个 wxapi 目录,并在该 wxapi 目录下新增一个 WXEntryActivity 类,该类继承自 Activity

[3] WXEntryActivity 类的代码如下:

package com.tcloudbase.fluttersdk.demo.wxapi;

import android.app.Activity;
import android.os.Bundle;

import androidx.annotation.Nullable;
public class WXEntryActivity extends Activity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

[4] 在 Android 项目的 manifest 文件里面加上:

<activity
    android:name=".wxapi.WXEntryActivity"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:exported="true"
    android:taskAffinity="net.sourceforge.simcpux"
    android:launchMode="singleTask">
</activity>

添加 iOS 配置 #

[1] 配置应用的 Universal Links

[1.1] 根据苹果文档配置你应用的 Universal Links

[1.2] 打开 Associated Domains 开关,将Universal Links域名加到配置上。

[2] 在 微信开放平台-管理中心-应用详情 配置iOS开发信息: Bundle IDUniversal Links

[3] 在 Xcode 中,选择你的工程设置项,选中 TARGETS 一栏,在 Info 标签栏的 URL Types 添加 URL Schemes 为你所注册的 Appid

[4] 在 Xcode 中,选择你的工程设置项,选中 TARGETS 一栏,在 Info 标签栏的 LSApplicationQueriesSchemes 添加 weixinweixinULAPI

import 'package:cloudbase_core/cloudbase_core.dart';
import 'package:cloudbase_auth/cloudbase_auth.dart';

// 初始化
CloudBaseCore core = CloudBaseCore.init({
    'env': 'xxx'
});

// 获取登录对象
CloudBaseAuth auth = CloudBaseAuth(core);

// 获取登录状态
CloudBaseAuthState authState = await auth.getAuthState();

// 唤起微信登录
if (authState == null) {
    await auth.signInByWx(wxAppId, wxUniLink).then((success) {
        // 登录成功
    })catchError((err) {
        // 登录失败
    });
}

自定义登录 #

CloudBase 允许开发者使用特定的登录凭据 Ticket 对用户进行身份认证。开发者可以使用服务端 SDK 来创建 Ticket,并且将 JWT 传入到 Flutter 应用内,然后调用 signInWithTicket() 获得 CloudBase 的登录态。

获取私钥文件 #

登录腾讯云云开发控制台,在用户管理页面中,点击“登录设置”,然后生成并下载私钥

云开发下载私钥

使用私钥文件 #

获取私钥文件之后,在服务端 JS SDK 初始化时,加入私钥文件的路径:

// 开发者的服务端代码
// 初始化示例
const tcb = require('tcb-admin-node');

// 1. 直接使用下载的私钥文件
tcb.init({
  // ...
  env: 'your-env-id',
  credentials: require('/path/to/your/tcb_custom_login.json')
});

// 2. 也可以直接传入私钥的内容
tcb.init({
  // ...
  env: 'your-env-id',
  credentials: {
    private_key_id: 'xxxxxxxxxxxxx',
    private_key: 'xxxxxxxxxxx'
  }
});

使用服务端 JS SDK 创建登录凭据 Ticket #

服务端 JS SDK 内置了生成 Ticket 的接口,开发者需要提供一个自定义的 customUserId 作为用户的唯一身份标识。Ticket 有效期为 5 分钟,过期则失效。

每个用户的 customUserId 不能相同,每次用户重新登录时,原有的登录态将会失效。

let customUserId = '123456';

const ticket = tcb.auth().createTicket(customUserId, {
  refresh: 10 * 60 * 1000 // 每十分钟刷新一次登录态, 默认为一小时
});
// 然后把 ticket 发送给 Web 端

Flutter 端上使用 Ticket 登录 #

创建 Ticket 之后,开发者应将 Ticket 发送至 Flutter 端,然后使用 Flutter SDK 提供的 signInWithTicket() 登录 CloudBase:

import 'package:cloudbase_core/cloudbase_core.dart';
import 'package:cloudbase_auth/cloudbase_auth.dart';

// 初始化
CloudBaseCore core = CloudBaseCore.init({
    'env': 'xxx'
});

// 获取登录对象
CloudBaseAuth auth = CloudBaseAuth(core);

// 获取登录状态
CloudBaseAuthState authState = await auth.getAuthState();

// 唤起自定义登录
if (authState == null) {
    await auth.signInWithTicket(ticket).then((success) {
        // 登录成功
    })catchError((err) {
        // 登录失败
    });
}

匿名登录 #

CloudBase 允许开发者启用匿名登录模式,在没有用户身份认证的情况下使用 CloudBase 资源。开发者调用 signInAnonymously() 即可获得 CloudBase 的登录态。

启用匿名登录模式 #

登录腾讯云云开发控制台,在用户管理页面中,点击“登录设置”,然后启用匿名登录

在 Flutter 端调用匿名登录 #

import 'package:cloudbase_core/cloudbase_core.dart';
import 'package:cloudbase_auth/cloudbase_auth.dart';

// 初始化
CloudBaseCore core = CloudBaseCore.init({
    'env': 'xxx'
});

// 获取登录对象
CloudBaseAuth auth = CloudBaseAuth(core);

// 获取登录状态
CloudBaseAuthState authState = await auth.getAuthState();

// 唤起匿名登录
if (authState == null) {
    await auth.signInAnonymously().then((success) {
        // 登录成功
    })catchError((err) {
        // 登录失败
    });
}

获取用户信息 #

任何方式登录成功后,可以调用 getUserInfo 获得用户的 Cloudbase 身份信息。

请求参数 #

响应参数 #

字段类型是否必备说明
uuidString用户在云开发的唯一ID
envString用户使用的云开发环境
loginTypeString用户登录类型
appidString微信(开放平台或公众平台)应用appid
openidString当前用户在微信(开放平台或公众平台)应用的openid
appidString微信(开放平台或公众平台)应用appid
openidString当前用户在微信(开放平台或公众平台)应用的openid
nickNameString用户昵称
genderString用户性别,male(男)或female(女)
countryString用户所在国家
provinceString用户所在省份
cityString用户所在城市
avatarUrlString用户头像链接

示例代码 #

import 'package:cloudbase_core/cloudbase_core.dart';
import 'package:cloudbase_auth/cloudbase_auth.dart';

// 初始化
CloudBaseCore core = CloudBaseCore.init({
    'env': 'xxx'
});

// 获取登录对象
CloudBaseAuth auth = CloudBaseAuth(core);

// 获取登录状态
CloudBaseAuthState authState = await auth.getAuthState();

// 获取用户信息
if (authState != null) {
    await auth.getUserInfo().then((userInfo) {
        // 获取用户信息成功
    })catchError((err) {
        // 获取用户信息失败
    });
}

退出登录 #

请求参数 #

示例代码 #

import 'package:cloudbase_core/cloudbase_core.dart';
import 'package:cloudbase_auth/cloudbase_auth.dart';

// 初始化
CloudBaseCore core = CloudBaseCore.init({
    'env': 'your-env-id'
});

// 获取登录对象
CloudBaseAuth auth = CloudBaseAuth(core);

// 退出登录
await auth.signOut();

[0.0.1] - 2020.01.14 #

  • 支持微信登录

[0.0.2] - 2020.02.10 #

  • 支持自定义登录
  • 支持匿名登录
  • 支持获取用户信息
  • 支持退出登录

[0.0.3] - 2020.03.17 #

  • 修复ios静态库编译失败的问题

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  cloudbase_auth: ^0.0.3

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:cloudbase_auth/cloudbase_auth.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
50
Health:
Code health derived from static analysis. [more]
99
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
60
Overall:
Weighted score of the above. [more]
67
Learn more about scoring.

We analyzed this package on Apr 3, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.7.1
  • pana: 0.13.6
  • Flutter: 1.12.13+hotfix.8

Health suggestions

Fix lib/src/index.dart. (-1 points)

Analysis of lib/src/index.dart reported 2 hints:

line 125 col 16: This function has a return type of 'Future

line 129 col 16: This function has a return type of 'Future

Format lib/cloudbase_auth.dart.

Run flutter format to format lib/cloudbase_auth.dart.

Format lib/src/anonymousAuth.dart.

Run flutter format to format lib/src/anonymousAuth.dart.

Fix additional 4 files with analysis or formatting issues.

Additional issues in the following files:

  • lib/src/baseAuth.dart (Run flutter format to format lib/src/baseAuth.dart.)
  • lib/src/cache.dart (Run flutter format to format lib/src/cache.dart.)
  • lib/src/customAuth.dart (Run flutter format to format lib/src/customAuth.dart.)
  • lib/src/wxAuth.dart (Run flutter format to format lib/src/wxAuth.dart.)

Maintenance suggestions

The package description is too short. (-20 points)

Add more detail to the description field of pubspec.yaml. Use 60 to 180 characters to describe the package, what it does, and its target use case.

Maintain an example. (-10 points)

Create a short demo in the example/ directory to show how to use this package.

Common filename patterns include main.dart, example.dart, and cloudbase_auth.dart. Packages with multiple examples should provide example/README.md.

For more information see the pub package layout conventions.

Package is pre-v0.1 release. (-10 points)

While nothing is inherently wrong with versions of 0.0.*, it might mean that the author is still experimenting with the general direction of the API.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.1.0 <3.0.0
cloudbase_core ^0.0.3 0.0.3
flutter 0.0.0
Transitive dependencies
charcode 1.1.3
collection 1.14.11 1.14.12
dio 3.0.9
flutter_web_plugins 0.0.0
http_parser 3.1.4
meta 1.1.8
path 1.6.4
shared_preferences 0.5.6+3
shared_preferences_macos 0.0.1+6
shared_preferences_platform_interface 1.0.3
shared_preferences_web 0.1.2+4
sky_engine 0.0.99
source_span 1.7.0
string_scanner 1.0.5
term_glyph 1.1.0
typed_data 1.1.6
vector_math 2.0.8
Dev dependencies
flutter_test