# 如何解决授权免登页面 20029 错误

## 问题现象

测试或使用应用时，访问授权免登页面报错 20029 redirect_uri 请求不合法，无法授权。

![image.png](//sf16-sg.larksuitecdn.com/obj/open-platform-opendoc-sg/7af2001ca19826fe8e8ab00be387c248_1Icx1ZQArv.png?height=566&lazyload=true&maxWidth=600&width=1078)

## 问题原因

可能原因如下：

- 当前应用与配置重定向 URL 的应用不匹配。例如，你在应用 B 内配置了重定向 URL，实际开发时使用应用 A [获取登录授权码 code](https://open.larksuite.com/document/common-capabilities/sso/api/obtain-oauth-code)。
- 应用未配置重定向 URL。

## 解决方案

1. 获取报错 20029 的页面 URL，并解析相关信息。

例如 `https://open.larksuite.com/open-apis/authen/v1/index?redirect_uri=http%3a%2f%2fims.shunmed.com%3a188%2fimsen%2ftable.aspx&app_id=cli_a44a4001a727a1234&state=fs_y5b`，其中：

- app_id 为 `cli_a44a4001a727a1234`
	- 重定向 URL 为 `http%3a%2f%2fexample.com%3a8080%2findex%2fdemo.aspx`，需要解码为 `http://example.com:8080/index/demo.aspx`（可参阅[获取授权登录授权码](https://open.larksuite.com/document/common-capabilities/sso/api/obtain-oauth-code)，其中重定向 URL 参数 `redirect_uri` 需要进行 "application/x-www-form-urlencoded" 格式编码）

2. 登录[开发者后台](https://open.larksuite.com/app)，找到与 app_id 相匹配的应用。

如果你不清楚 app_id 对应的应用是哪个，可以调用[获取应用信息](https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/application-v6/application/get)接口，通过 app_id 获取应用名称、创建者等信息。

3. （可选）检查应用是否匹配。

- 如果你实际开发的应用与步骤 1 获取到的 app_id 对应的应用不是一个应用，则说明你在开发过程中，项目内使用的 app_id 不正确，你需要替换为正确的应用 app_id，并确保该应用配置了重定向 URL。
	- 如果 app_id 正确，则需要进行下一步操作，配置重定向 URL。

4. 进入应用详情页，在 **开发配置** > **安全设置** 页面，配置重定向 URL。

例如步骤 1 获取的重定向 URL 为 `http://example.com:8080/index/demo.aspx`，则需要将该 URL 添加到应用的 **重定向 URL** 中。

![image.png](//sf16-sg.larksuitecdn.com/obj/open-platform-opendoc-sg/c93152e4d66ae3fad48edbeb60e1ba63_rsrTxpehgz.png?height=934&lazyload=true&maxWidth=600&width=2882)warning
**注意**：
<br>
开发者后台的应用重定向 URL 列表内需要包含完整路径，但如果路径后有 `?` 或者 `#` 后缀，可以不包含在重定向 URL 中。重定向 URL 详细说明参见[配置重定向 URL](https://open.larksuite.com/document/uYjL24iN/uYjN3QjL2YzN04iN2cDN)。
<br>
例如，`http://www.example.com/#/index` 配置为应用的重定向 URL 时，只需配置为 `http://www.example.com`。如果配置为 `http://www.example.com/#/index` 也不会报错，只是实际生效的 URL 为 `http://www.example.com`。
