# 快捷获取 openid

> 来源：https://help.gravity-engine.com/docs/client-sdk/mini-games/advanced/quick-get-openid
> 介绍在没有自建后端的情况下，如何通过引力 SDK 快捷获取微信、抖音、快手、B 站小游戏的 openid，包含后台凭据配置、调用流程与示例。











部分客户的小游戏属于单机游戏，没有配套的后端开发人员或者服务器，这种情况下想获取 `openid` 就较为繁琐，因此引力 SDK 提供了快速获取小游戏 `openid` 的方法，非 Unity SDK 各平台的具体调用方式见下文，本文档对此进行说明。

微信、抖音、快手、B 站四个平台的差异仅在于：引力后台需要填写的凭据、小游戏官方的登录方法、引力 SDK 提供的获取方法名。下文为各平台非 Unity SDK 的调用流程，Unity SDK 请参考 [Unity SDK 快捷获取 openid](/docs/client-sdk/unity/advanced/quick-get-openid)。

## 1. 微信小游戏 [#1-微信小游戏]

### 1.1 前置要求 [#11-前置要求]

1. 在引力后台「设置 → 应用管理 → 配置 → 微信开发者」中，添加小游戏的 `AppSecret`。

<img alt="在引力后台添加微信小游戏 AppSecret" src="__img0" />

> **注意**
> 请注意：在引力添加好 `AppSecret` 后，引力可能会使用该 Secret 刷新 `access_token`，请务必先了解[微信 Access Token](/docs/server-integration/mini-game-tokens/wechat-access-token)文档的全部内容。

2. 升级引力 SDK 到 [4.8.18](https://github.com/GravityInfinite/mpg-demos/releases) 及以上版本。

### 1.2 调用流程 [#12-调用流程]

每次冷启动过程中，`GravityEngine` 的实例化方法 `new GravityEngine()` 与初始化方法 `setupAndStart()` 均只能被调用一次，`clientId` 参数必须在这两个方法的其中一个传入。

1. 先 `new GravityEngine()`，此时传入的 config 可以不填 `clientId`。

2. 然后调用 `ge.getWechatOpenId` 方法获取 `openid`。

3. 然后在获取成功的回调里调用 `setupAndStart`，传入上面获取的 `openid`：

   ```js
   setupAndStart({ clientId: "xxx" })
   ```

4. 然后继续调用 `initialize` 方法。

调用示例：

```js
wx.login({
  success: (res) => {
    ge.getWechatOpenId(res.code).then((res) => {
      // 这里返回的 res 和官方文档返回的 resp 保持一致，具体请查看下方列出的官方文档中的返回值
      console.log(res);
    }).catch(err => {
      console.log(err);
    })
  }
})
```

### 1.3 参考文档 [#13-参考文档]

* [微信小游戏快速集成](/docs/client-sdk/mini-games/wechat-quickstart)
* [微信 Access Token](/docs/server-integration/mini-game-tokens/wechat-access-token)
* [code2Session（微信官方）](https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html)
* [官方文档返回值说明](https://q95od74236.feishu.cn/docx/CX1HdEn6voyhVmxNl4Sc264GnWg#doxcnf4flYMBqJQpqAzS6mIalSh)

## 2. 抖音小游戏 [#2-抖音小游戏]

### 2.1 前置要求 [#21-前置要求]

1. 在引力后台「设置 → 应用管理 → 配置 → 抖音开发者」中，添加小游戏的 `AppSecret`。

<img alt="在引力后台添加抖音小游戏 AppSecret" src="__img1" />

> **注意**
> 请注意：在引力添加好 `AppSecret` 后，引力可能会使用该 Secret 刷新 `access_token`，请务必先了解[抖音 Access Token](/docs/server-integration/mini-game-tokens/douyin-access-token)文档的全部内容。

2. 升级引力 SDK 到 [4.8.18](https://github.com/GravityInfinite/mpg-demos/releases) 及以上版本。

### 2.2 调用流程 [#22-调用流程]

每次冷启动过程中，`GravityEngine` 的实例化方法 `new GravityEngine()` 与初始化方法 `setupAndStart()` 均只能被调用一次，`clientId` 参数必须在这两个方法的其中一个传入。

1. 先 `new GravityEngine()`，此时传入的 config 可以不填 `clientId`。

2. 然后调用 `ge.getDouyinOpenId` 方法获取 `openid`。

3. 然后在获取成功的回调里调用 `setupAndStart`，传入上面获取的 `openid`：

   ```js
   setupAndStart({ clientId: "xxx" })
   ```

4. 然后继续调用 `initialize` 方法。

调用示例：

```js
tt.login({
  success: (res) => {
    ge.getDouyinOpenId(res.code).then((res) => {
      // 这里返回的 res 和官方文档返回的 resp 保持一致，具体请查看下方列出的官方文档中的返回值
      console.log(res);
    }).catch(err => {
      console.log(err);
    })
  }
})
```

### 2.3 参考文档 [#23-参考文档]

* [抖音小游戏快速集成](/docs/client-sdk/mini-games/douyin-quickstart)
* [抖音 Access Token](/docs/server-integration/mini-game-tokens/douyin-access-token)
* [code2Session（抖音官方）](https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/server/log-in/code-2-session)
* [官方文档返回值说明](https://q95od74236.feishu.cn/docx/KdgfdfHraogXhlxUWxPc34WWnfh#doxcnO5Xu8IUSvRDdbOpcClWWec)

## 3. 快手小游戏 [#3-快手小游戏]

### 3.1 前置要求 [#31-前置要求]

1. 在引力后台「设置 → 应用管理 → 配置 → 快手开发者」中，添加小游戏的 `AppSecret`。

<img alt="在引力后台添加快手小游戏 AppSecret" src="__img2" />

2. 升级引力 SDK 到 [4.8.18](https://github.com/GravityInfinite/mpg-demos/releases) 及以上版本。

### 3.2 调用流程 [#32-调用流程]

每次冷启动过程中，`GravityEngine` 的实例化方法 `new GravityEngine()` 与初始化方法 `setupAndStart()` 均只能被调用一次，`clientId` 参数必须在这两个方法的其中一个传入。

1. 先 `new GravityEngine()`，此时传入的 config 可以不填 `clientId`。

2. 然后调用 `ge.getKuaishouOpenId` 方法获取 `openid`。

3. 然后在获取成功的回调里调用 `setupAndStart`，传入上面获取的 `openid`：

   ```js
   setupAndStart({ clientId: "xxx" })
   ```

4. 然后继续调用 `initialize` 方法。

调用示例：

```js
ks.login({
  success: (res) => {
    ge.getKuaishouOpenId(res.code).then((res) => {
      // 这里返回的 res 和官方文档返回的 resp 保持一致，具体请查看下方列出的官方文档中的返回值
      console.log(res);
    }).catch(err => {
      console.log(err);
    })
  }
})
```

### 3.3 参考文档 [#33-参考文档]

* [快手小游戏快速集成](/docs/client-sdk/mini-games/kuaishou-quickstart)
* [code2Session（快手官方）](https://ks-game-docs.kuaishou.com/minigame/api/open/login/auth.code2Session.html)
* [官方文档返回值说明](https://q95od74236.feishu.cn/docx/LZZddcLNLoDNTJxIKoJcXokRngf#doxcnQuTHPjvtY9YR11ZHglD2De)

## 4. B 站小游戏 [#4-b-站小游戏]

### 4.1 前置要求 [#41-前置要求]

1. 在引力后台「设置 → 应用管理 → 配置 → B站营销」中，添加小游戏的 `Secret Key`。

<img alt="在引力后台添加 B 站小游戏 Secret Key" src="__img3" />

2. 升级引力 SDK 到 [4.8.18](https://github.com/GravityInfinite/mpg-demos/releases) 及以上版本。

### 4.2 调用流程 [#42-调用流程]

每次冷启动过程中，`GravityEngine` 的实例化方法 `new GravityEngine()` 与初始化方法 `setupAndStart()` 均只能被调用一次，`clientId` 参数必须在这两个方法的其中一个传入。

1. 先 `new GravityEngine()`，此时传入的 config 可以不填 `clientId`。

2. 然后调用 `ge.getBilibiliOpenId` 方法获取 `openid`。

3. 然后在获取成功的回调里调用 `setupAndStart`，传入上面获取的 `openid`：

   ```js
   setupAndStart({ clientId: "xxx" })
   ```

4. 然后继续调用 `initialize` 方法。

调用示例：

```js
bl.login({
  success: (res) => {
    ge.getBilibiliOpenId(res.code).then((res) => {
      // 这里返回的 res 和官方文档返回的 resp 保持一致，具体请查看下方列出的官方文档中的返回值
      console.log(res);
    }).catch(err => {
      console.log(err);
    })
  }
})
```

### 4.3 参考文档 [#43-参考文档]

* [B 站小游戏快速集成](/docs/client-sdk/mini-games/bilibili-quickstart)
* [登录接口（B 站官方）](https://miniapp.bilibili.com/small-game-doc/open/login/)
* [官方文档返回值说明](https://q95od74236.feishu.cn/docx/JGbTdgHgEoeFx3xC5GncW94In3d#doxcnvtPh0b0xW6AfnzDkJWzlmb)

## 5. Unity SDK [#5-unity-sdk]

Unity SDK 的调用方式四个平台完全一致，且需要自行调用 `GravityHelper.GetOpenId` 方法，请参考 [Unity SDK 快捷获取 openid](/docs/client-sdk/unity/advanced/quick-get-openid)。
