# wx.weixinMiniProgramLogin

- 调用 wx.weixinMiniProgramLogin 即可唤起微信小程序登录，获取临时登录凭证 (code)，通过凭证进而换取用户标识信息等。
- 另外，登录成功后，可以调用微信 JSAPI（如 `wx.getMiniProgramCode`）以使用微信开放能力（如，云开发）等

## 前置准备

- [多端应用账号需绑定移动应用账号](/miniprogram/dev/platform-capabilities/miniapp/handbook/web/bind-openapp)
- 需要在 `project.miniapp.json` 勾选 OpenSDK
- 配置唤起的微信小程序版本。
  - 在 `app.miniapp.json` 中，添加 `authorizeMiniprogramType` 参数，可指定跳转小程序版本（0：正式版，1：开发版，2：体验版）。
    ![](https://res.wx.qq.com/op_res/CSjUjANOIr1KvS1TFwk4N5JzegO0xv-w_Njotflg3cNJg9zTdmsNdPBPVoXFwIY5a9LRtubzdAEA1m2zFK_xiA)
- 配置小程序官方授权页
  - 在 `app.json` 中，添加 `useAuthorizePage` 参数，并设为 `true`。配置后，小程序将在编译时插入小程序官方授权页（官方授权页不占用代码包体积）。
    ![](https://res.wx.qq.com/op_res/CSjUjANOIr1KvS1TFwk4N38LUM7Oam3WQbN1l948rFzggvYkgSJ0F0dvtPPfIAXtft_iJBSmLF6dr8HY-S1p1w)
* 在微信开发者工具中，选择「小程序模式」，点击预览，使用微信扫码。

## 参数

### Object object

|属性|类型|默认值|必填|说明
|--|--|--|--|--|
|redirectPath|string||否|指定授权完小程序跳转的页面|
|success|function||否|接口调用成功的回调函数|
|fail|function||否|接口调用失败的回调函数|
|complete|function||否|接口调用结束的回调函数|

#### object.success 回调函数

##### 参数

###### Object res

|属性|类型|说明
|--|--|--|
|code|string|用户登录凭证（有效期五分钟）。开发者可以在开发者服务器调用 [code2Verifyinfo](/miniprogram/dev/platform-capabilities/miniapp/openapi/code2Verifyinfo)，使用 code 换取用户标识信息等；
 注意 code2Verifyinfo 用的是多端应用 appid 和 secret，不是小程序的 appid 和 secret|

#### object.fail 回调函数

##### 参数

###### Object res

|属性|类型|说明
|--|--|--|
|errCode|number|错误码|
|errMsg|string|错误提示|

**res.errCode**

|errCode|说明|
|--|--|
|-1|system error|
|10001005|多端应用未接入身份管理|
|10001008|多端应用未绑定开发小程序|
|10001016|多端应用模块绑定开发小程序错误|
|-700000|前端错误，errMsg 将给出详细提示|

**常见前端错误**
|errMsg|指引|
|--|--|
|sendOpenReq:fail launch wechat fail|拉起微信失败，即你的多端应用尚未绑定移动应用账号，导致 OpenSDK 失败了。解决方案：[绑定移动应用账号](/miniprogram/dev/platform-capabilities/miniapp/handbook/web/bind-openapp)|

## 示例代码

```js
wx.weixinMiniProgramLogin({
  redirectPath: 'pages/home/index',
  success (res) {
    if (res.code) {
      // 发起网络请求
      wx.request({
        url: 'https://example.com/onLogin',
        data: {
          code: res.code
        }
      })

      // login 成功后，可以直接使用云开发功能
      wx.cloud.callFunction({
        name: 'myCloudFunction'
      })

    } else {
      console.log('登录失败！' + res.errMsg)
    }
  }
})
```
