# [Cloud](/minigame/dev/wxcloud/reference-sdk-api/Cloud).getWXContext(): Object

> 支持端：[云函数](/minigame/dev/wxcloud/reference/changelog-server-sdk)

在云函数中获取微信调用上下文

## 返回值

### Object

wxContext

| 属性 | 类型 | 说明 |
| ---- | ---- | ---- |
| OPENID  | string | 小程序用户 openid，小程序端调用云函数时有 |
| APPID  | string | 小程序 AppID，小程序端调用云函数时有 |
| UNIONID  | string | 小程序用户 unionid，小程序端调用云函数，并且[满足 unionid 获取条件](/miniprogram/dev/framework/open-ability/union-id.md)时有 |
| FROM_OPENID  | string | 调用来源方小程序/公众号用户 openid，[跨账号调用](/minigame/dev/wxcloud/basis/resource-sharing)时有 |
| FROM_APPID  | string | 调用来源方小程序/公众号 AppID，[跨账号调用](/minigame/dev/wxcloud/basis/resource-sharing)时有 |
| FROM_UNIONID  | string | 调用来源方用户 unionid，[跨账号调用](/minigame/dev/wxcloud/basis/resource-sharing)时有，并且[满足 unionid 获取条件](/miniprogram/dev/framework/open-ability/union-id.md)时有 |
| ENV  | string | 云函数所在环境的 ID |
| SOURCE  | string | 调用来源（云函数本次运行是被什么触发） |
| CLIENTIP  | string | 小程序客户端 IPv4 地址 |
| CLIENTIPV6  | string | 小程序客户端 IPv6 地址 |
| OPEN_DATA_INFO  | string | 通过[云函数获取开放数据](/miniprogram/dev/framework/open-ability/signature.md#method-cloud)时，可用此校验入参中的开放数据是否来自微信后台 |

## 使用说明

`SOURCE` 值跟随调用链条传递，会表示调用链路情况（用英文逗号分隔），比如小程序调用云函数 A，再在云函数 A 内调用云函数 B，则 A 获得的 `SOURCE` 为 `wx_client`， B 内获得的 `SOURCE` 为 `wx_client,scf`（微信小程序调用，然后云函数调用）。

`SOURCE` 的枚举类型：

| SOURCE 值 | 含义 |
| -- | -- |
| wx_devtools | 微信 IDE 调用 |
| wx_client   | 微信小程序调用 |
| wx_http     | 微信 HTTP API 调用 |
| wx_trigger  | 云函数定时触发器调用 |
| wx_paycallback | 微信支付回调 |
| wx_crawler | 微信小程序爬虫调用 |
| wx_localdebug | 微信 IDE 本地调试调用 |
| wx_unknown  | 微信未知来源调用 |
| scf         | 云函数调用云函数 |
| 其他         | 非微信端触发 |

如果在云函数本地调试中，`ENV` 会为 `local`，`SOURCE` 会为 `wx_client`。

`OPEN_DATA_INFO`:

通过[云函数获取开放数据](/miniprogram/dev/framework/open-ability/signature.md#method-cloud)时，可用此校验入参中的开放数据是否来自微信后台。

此值类型为 string，有可能为空，JSON 字符串。解开之后的格式：

```
{
  keys: ['包含微信后台给的开放数据字段 1', '包含微信后台给的开放数据字段 2']
}
```

### 注意事项

请不要在 `exports.main` 外使用 `getWXContext`，此时尚没有调用上下文，无法获取得到信息。

## 示例代码

```js
const cloud = require('wx-server-sdk')

exports.main = async (event, context) => {
  const {
    OPENID,
    APPID,
    UNIONID,
    ENV,
  } = cloud.getWXContext()

  return {
    OPENID,
    APPID,
    UNIONID,
    ENV,
  }
}
```
