开发指南/应用登录与用户授权/应用授权登录概述
# 应用授权登录概述

开放平台应用支持小程序、网页和机器人三种能力。小程序和网页可在应用中心打开。另外，网页还可在聊天框内点击链接打开，移动端内会启动 webview 承载应用网页，PC 端内会跳转到系统浏览器。    

应用可通过开放平台身份验证能力获取用户身份，完成用户在应用中的登录流程。身份验证时，客户端内免登，浏览器上需要用户完成扫码登录或密码登录。当前，开放平台身份验证存在如下三种场景：
- 小程序免登
- 浏览器内网页登录
- 客户端内网页免登
如果需要获取用户的 user_access_token 调用 OpenAPI，代表以该用户身份来访问资源，那么额外还涉及到增量授权链路，参见[终端用户授权概述](https://open.larksuite.com/document/common-capabilities/sso/end-user-consent-overview)

## 小程序免登

![gadget_login_cn.jpg](//sf16-sg.larksuitecdn.com/obj/open-platform-opendoc-sg/e03ff396e6ebacb6699cb450d50c473c_Kl2AEC37cW.jpg?height=1554&lazyload=true&maxWidth=750&width=2274)

**免登步骤**: <br>
第一步: 小程序调用开放平台[小程序登录接口](https://open.larksuite.com/document/uYjL24iN/uUzMuUzMuUzM/requestaccess)获取用户登录预授权码 code；<br>
第二步: 应用后端服务调用登录校验接口 [获取 user_access_token](https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/authentication-management/access-token/get-user-access-token) 验证 code 的合法性，并通过[获取用户信息](https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/reference/authen-v1/user_info/get) 获取到用户身份；<br>
第三步: 应用后端设置应用自身登录态。<br>

## 浏览器内网页登录
开放平台会校验应用 redirect_uri 的合法性。 <br> 

![image.png](//sf16-sg.larksuitecdn.com/obj/open-platform-opendoc-sg/01624a31e6684dffa89b0b144cbf3ddb_m0QVxO93fW.png?height=2640&lazyload=true&maxWidth=600&width=1880)

**登录步骤**:<br>
第一步: 网页后端发现用户未登录，重定向至[登录页面](https://open.larksuite.com/document/common-capabilities/sso/api/obtain-oauth-code)；<br>
第二步: 用户登录后，开放平台生成登录预授权码，重定向至 redirect_uri；<br>
第三步: 网页后端调用[获取 user_access_token](https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/authentication-management/access-token/get-user-access-token)获取 user_access_token；<br>
第四步: 网页后端调用[获取用户信息](https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/reference/authen-v1/user_info/get) 获取到用户身份，并设置应用自身登录态。

## 客户端内网页免登（新）
Lark5.1开始，客户端内网页免登建议采用新方案进行。<br> 
新方案在优化了获取临时授权码的方式，采用 API 的方式获取授权码。其他流程未进行修改，请参考老免登流程。<br> 
开放平台会校验应用 当前访问URL 的合法性，请参考[步骤三：免登流程（可选）](https://open.larksuite.com/document/uYjL24iN/uMTMuMTMuMTM/development-guide/step-3)。 <br> 

**免登步骤**:<br>
第一步: 网页前端调用[tt.requestAccess](https://open.larksuite.com/document/uYjL24iN/uUzMuUzMuUzM/requestaccess)获取临时授权码；<br>
第二步: 网页后端调用[获取 user_access_token](https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/authentication-management/access-token/get-user-access-token)获取 user_access_token；<br>
第三步: 网页后端调用[获取用户信息](https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/reference/authen-v1/user_info/get) 获取到用户身份，并设置应用自身登录态。
**注意事项**：相比旧版免登方式，使用此方法的优点：
- 不会阻塞网页内容渲染
- 避免重定向失败导致无法访问网页
- 无需进行复杂的 URL encode 处理

## 客户端内网页免登（旧）
开放平台会校验应用 redirect_uri 的合法性。 <br> 

![image.png](//sf16-sg.larksuitecdn.com/obj/open-platform-opendoc-sg/5cc870aa38a01d9afd19e53cb5e68f51_LwSlVV9IQW.png?height=2640&lazyload=true&maxWidth=600&width=1880)

**免登步骤**:<br>
第一步: 网页后端发现用户未登录，重定向至[登录页面](https://open.larksuite.com/document/common-capabilities/sso/api/obtain-oauth-code)；<br>
第二步: 开放平台生成登录预授权码，重定向至 redirect_uri；<br>
第三步: 网页后端调用[获取 user_access_token](https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/authentication-management/access-token/get-user-access-token)获取 user_access_token；<br>
第四步: 网页后端调用[获取用户信息](https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/reference/authen-v1/user_info/get) 获取到用户身份，并设置应用自身登录态。

