收藏
回答

云开发web页面公众号授权登录,真机checkLogin一直失败,开发者工具却可以成功?

授权地址: https://wechat.mklaus.cn

效果对比,开发者工具成功

真机一直请求授权


页面就一个html文件,没有其他。代码如下

```html
<html>
  <head><script src="https://res.wx.qq.com/open/js/cloudbase/1.1.0/cloud.js"></script></head>
  <body><p>hello world</p></body>
  <script>
    window.login = async function() {
      const checkLoginOptions = {
        provider: 'OfficialAccount',
        appid: 'wx1801955d58387cb4',
      }
      var urlSearch = new URLSearchParams(location.search)
      var accessToken = urlSearch.get('access_token')
      var refreshToken = urlSearch.get('refresh_token')

      if (urlSearch.get('oauthredirect') === '1') {
        checkLoginOptions.accessToken = accessToken
        checkLoginOptions.refreshToken = refreshToken
      }

      const result = await cloud.checkLogin(checkLoginOptions)
      if (result.errCode === 0 && result.loggedIn) {
        alert('login success')
      } else {
        try {
          cloud.startLogin({
            provider: 'OfficialAccount',
            appid: 'wx1801955d58387cb4',
            scope: 'snsapi_base',
            redirectUri: 'https://wechat.mklaus.cn/'
          })
        } catch (e) {
          console.error(`startLogin fail: ${e}`)
        }
      }
    }
    
    window.login()
  </script>
</html>
```
最后一次编辑于  2020-12-22
回答关注问题邀请回答
收藏

3 个回答

  • Shannon
    Shannon
    2020-12-22

    你好,苹果 iOS 14 以上受系统限制影响,公众号授权登录需要使用云开发静态托管域名或反向代理形式,将微信授权页面代理至第一方(参考 在公众号中使用云开发 | 微信开放文档 (qq.com) 中「注意」部分)。

    从云开发 Web SDK 1.2.0 开始,支持第一方授权登录

    <script src="https://res.wx.qq.com/open/js/cloudbase/1.2.0/cloud.js"></script>
    


    如何使用第一方 Cookie 登录态:

    1. 使用https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/staticstorage/introduction.html 中静态网站托管能力,静态资源托管至云开发,无需配置即可使用第一方登录转发(即 __wx__ 授权部分)
    2. 手动配置自己域名下的 __wx__ 路径的反向代理转发:将域名下 __wx__ 部分转发至 https://servicewechat.com/wxa-qbase/


    参考服务器转发配置如下:

    使用 Nginx 转发

    location /__wx__/ {
            proxy_pass https://servicewechat.com/wxa-qbase/;
    }
    
    


    使用 Express 转发

    var proxy = require('express-http-proxy');
    var app = require('express')();
     
    app.use('/__wx__/', proxy('https://servicewechat.com/wxa-qbase/'));
    
    2020-12-22
    有用
    回复 29
    • 止😊#
      止😊#
      2020-12-22
      预计大概多久可以修复,需要等下一个微信版本更新吗?
      2020-12-22
      回复
    • Shannon
      Shannon
      2020-12-22回复止😊#
      预计这两周就会上线修复,不需要更新客户端。
      2020-12-22
      回复
    • 止😊#
      止😊#
      2020-12-22
      试了一台安卓可以正常运行,

      试了一台iOS 12也出现同样的问题,不单只iOS 14有,估计iOS都有问题
      2020-12-22
      回复
    • 小明明
      小明明
      2020-12-23
      我这边测试是14.0+版本有这个问题,ios13.7没有问题,真的很着急,求快点修复
      2020-12-23
      回复
    • 栗浩
      栗浩
      2021-01-22
      然而快一个月了,这个问题还没有修复
      2021-01-22
      回复
    查看更多(24)
  • 杨晓亮🤘 ⃢👁-👁⃢
    杨晓亮🤘 ⃢👁-👁⃢
    2023-03-21
    app.use('/__wx__/', proxy('https://servicewechat.com/wxa-qbase/'));
    c对我来说没用,nginx反向代理可以,不过又有其它404:
    "POST /__wx__/check_login HTTP/1.1" 404 Not Found
    


    @Shannon 怎么感觉无解呢这个问题,是不是云托管都没什么人用的,开发这么难,我10几年开发,难住了

    2023-03-21
    有用
    回复
  • 赵本山
    赵本山
    2022-03-12

    自有网站测试,问题还是依旧啊,是不是放弃了

    2022-03-12
    有用
    回复
登录 后发表内容
问题标签