数据分析 /访问留存 /获取用户访问小程序周留存

# 获取用户访问小程序周留存

> 接口应在服务器端调用,详细说明参见[服务端API](https://developers.weixin.qq.com/miniprogram/dev/framework/server-ability/backend-api.html)。

> 本接口支持[云调用](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/openapi/openapi.html)。需开发者工具版本 >= `1.02.1904090`(最新[稳定版下载](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)),`wx-server-sdk` >= `0.4.0`

## 接口说明

### 接口英文名

getWeeklyRetain

### 功能描述

该接口用于获取用户访问小程序周留存。

### 注意事项

请求 json 和返回 json 与天的一致,这里限定查询一个自然周的数据,时间必须按照自然周的方式输入: 如:20170306(周一), 20170312(周日)

## 调用方式

### HTTPS 调用

```text
POST https://api.weixin.qq.com/datacube/getweanalysisappidweeklyretaininfo?access_token=ACCESS_TOKEN 
```

### 云调用

- 出入参和 HTTPS 调用相同,调用方式可查看[云调用说明文档](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/openapi/openapi.html)
- 接口方法为: openapi.analysis.getWeeklyRetain

### 第三方调用

- 调用方式以及出入参和 HTTPS 相同,仅是调用的 token 不同
- 该接口所属的权限集 id 为:18、21
- 服务商获得其中之一权限集授权后,可通过使用[authorizer_access_token](https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/ThirdParty/token/api_authorizer_token.html)代商家进行调用

### 请求参数

| 属性                                  | 类型   | 必填 | 说明                                                         |
| :------------------------------------ | :----- | :--- | :----------------------------------------------------------- |
| access_token / cloudbase_access_token | string | 是   | 接口调用凭证,该参数为 URL 参数,非 Body 参数。access_token和cloudbase_access_token二选一 其中access_token可通过[getAccessToken](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/access-token/auth.getAccessToken.html)接口获得; 如果是第三方代调用请传入[authorizer_access_token](https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/ThirdParty/token/api_authorizer_token.html); cloudbase_access_token可通过[getOpenData](https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/guide/weixin/token.html)接口获得 |
| begin_date                            | string | 是   | 开始日期,为周一日期。格式为 yyyymmdd                        |
| end_date                              | string | 是   | 结束日期,为周日日期,限定查询一周数据。格式为 yyyymmdd      |

### 返回参数

|      | 属性                                                         | 类型          | 说明                          |
| :--- | :----------------------------------------------------------- | :------------ | :---------------------------- |
|      | ref_date                                                     | string        | 时间,如:"20170306-20170312" |
|      | visit_uv_new                                                 | array<object> | 新增用户留存                  |
|      | 属性类型说明keynumber标识,0开始,表示当周,1表示1周后。依此类推,取值分别是:0,1,2,3,4valuenumberkey对应日期的新增用户数/活跃用户数(key=0时)或留存用户数(k>0时) |               |                               |
|      | visit_uv                                                     | array<object> | 活跃用户留存                  |
|      | 属性类型说明keynumber标识,0开始,表示当周,1表示1周后。依此类推,取值分别是:0,1,2,3,4valuenumberkey对应日期的新增用户数/活跃用户数(key=0时)或留存用户数(k>0时) |               |                               |

## 调用示例

> 示例说明: HTTPS调用

### 请求数据示例

```json
{
  "begin_date" : "20170306",
  "end_date" : "20170312"
} 
```

### 返回数据示例

```json
{
  "ref_date": "20170306-20170312",
  "visit_uv_new": [
    {
      "key": 0,
      "value": 0
    },
    {
      "key": 1,
      "value": 16853
    }
  ],
  "visit_uv": [
    {
      "key": 0,
      "value": 0
    },
    {
      "key": 1,
      "value": 99310
    }
  ]
} 
```

> 示例说明: 云函数调用

### 请求数据示例

```text
const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,
})
exports.main = async (event, context) => {
  try {
    const result = await cloud.openapi.analysis.getWeeklyRetain({
        "beginDate": '20170306',
        "endDate": '20170312'
      })
    return result
  } catch (err) {
    return err
  }
} 
```

### 返回数据示例

```json
{
  "refDate": "20170306-20170312",
  "visitUvNew": [
    {
      "key": 0,
      "value": 0
    },
    {
      "key": 1,
      "value": 16853
    }
  ],
  "visitUv": [
    {
      "key": 0,
      "value": 0
    },
    {
      "key": 1,
      "value": 99310
    }
  ],
  "errMsg": "openapi.analysis.getWeeklyRetain:ok"
} 
```

### 错误码

| 错误码 | 错误码取值                                              | 解决方案                                                     |
| :----- | :------------------------------------------------------ | :----------------------------------------------------------- |
| -1     | system error                                            | 系统繁忙,此时请开发者稍候再试                               |
| 40001  | invalid credential access_token isinvalid or not latest | 获取 access_token 时 AppSecret 错误,或者 access_token 无效。请开发者认真比对 AppSecret 的正确性,或查看是否正在为恰当的公众号调用接口 |

|      |      |      |
| :--- | :--- | :--- |
|      |      |      |
|      |      |      |
|      |      |      |