微信开放平台【第三方平台】java开发总结:第三方平台授权流程说明(authorization_code)(四)

2023-11-04

第三方平台授权流程说明(全网最详细的微信第三方平台授权公众号/小程序开发说明)

  • 参考文档地址:

ttps://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/Authorization_Process_Technical_Description.html

  • 授权流程技术说明

小程序或者公众号授权给第三方平台的技术实现流程比较简单,如下图所示:
第三方服务商构建授权链接放置自己的网站,用户点击后,弹出授权页面。
在这里插入图片描述

  • 账号管理员扫码,选择需要授权的账号,进行授权。

在这里插入图片描述

  • 下面对其进行详细介绍:

步骤 1:第三方平台方获取预授权码(pre_auth_code)
点击https://blog.csdn.net/u011627598/article/details/103668844链接地址有第三方平台方获取预授权码(pre_auth_code)的说明和写法

步骤 2:引入用户进入授权页

第三方平台方可以在自己的网站中放置“微信公众号授权”或者“小程序授权”的入口,或生成授权链接放置在移动网页中,引导公众号和小程序管理员进入授权页。

方式一:授权注册页面扫码授权

  • **如果第三方平台没有全网发布,请在(开发资料-授权测试公众号列表)中配置要授权的公众号/小程序

在这里插入图片描述

授权页网址为:

https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=xxxx&pre_auth_code=xxxxx&redirect_uri=xxxx&auth_type=xxx

在这里插入图片描述
在这里插入图片描述

  • 配置的回调 URI(redirect_uri)代码如下:
@ApiOperation(value = "小程序或者公众号授权给第三方平台")
    @RequestMapping(value = "/platform/authcode",
            method = RequestMethod.GET)
    public void wechatPlatformAauthcode(HttpServletResponse response,
                                        @RequestParam("auth_code") String authCode,
                                        @RequestParam("expires_in") String expiresIn) {
        logger.debug("小程序或者公众号授权给第三方平台");
        try {
            logger.debug("小程序或者公众号授权给第三方平台【authCode】:" + authCode + "【expiresIn】:" + expiresIn);
            dbyWechatExtService.wechatPlatformAauthcode(response, authCode, expiresIn);
            logger.debug("小程序或者公众号授权给第三方平台,操作成功");
        } catch (Exception e) {
            logger.error("小程序或者公众号授权给第三方平台,操作异常", e.getMessage(), e);
        }
    }
  • response.sendRedirect()进行重定向
@Override
    public void wechatPlatformAauthcode(HttpServletResponse response, String authCode, String expiresIn) {
        try {
            // 获取令牌【component_access_token】
            String accessToken = redisTemplate.opsForValue().get("component_access_token").toString();
            logger.debug("====================令牌【accessToken】:" + accessToken);
            // 使用授权码获取授权信息
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("component_appid", PLATFORM_APP_ID);
            jsonObject.put("authorization_code", authCode);
            String post = OkHttpHelper.post(API_QUERY_AUTH_URL + accessToken, JSON.toJSONString(jsonObject));
            logger.debug("====================返回post结果:" + post);
            // 重定向地址
            response.sendRedirect("/wechat/authcode");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  • 到这里第三方平台授权公众号/小程序就完成了,如有疑问请私信我

如果对您起到了帮助,麻烦你点个赞,你的小心心就是我继续更新博客的动力,谢谢。

  • 下期分享Linux系统命令行安装达梦数据库(全网最全最可行的安装方式)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信开放平台【第三方平台】java开发总结:第三方平台授权流程说明(authorization_code)(四) 的相关文章

  • SLF4J - Logback:如何在运行时配置记录器?

    我们在项目中使用 LogBack 我想根据一些数据库值配置记录器 即如果某个数据库值设置为 true 则记录器应同时使用文件和数据库附加程序 如果为 false 则记录器必须仅使用数据库附加程序 我还想保留使用静态最终记录器 因此我不会在每
  • 春天。使用java配置解决循环依赖而不使用@Autowired

    我有循环依赖和java配置 虽然使用 xml 配置解决它非常简单 但如果没有 Autowired 我无法使用 java 配置解决它 豆子 public class A private B b public B getB return b p
  • H2 - 多个应用程序访问同一个 H2 数据库

    我正在使用嵌入式数据库H2在 2 个网络应用程序中说WebApp1 and WebApp2 我运行 WebApp1 并执行一些查询来访问 H2 数据库 同时我运行 WebApp2 但它抛出异常H2 当前已被另一个进程使用 我的需求是 我应该
  • 在 Java 中将系统属性设置为 Null

    在我的单元测试中 我需要将 workingDir 系统属性设置为 Null 但我不能这样做 因为它给了我 NullPointerException System setProperty workingDir null 我该怎么做 您不能将属
  • 哪个 new 首先执行——在构造函数中还是在构造函数外?

    如果我定义一个类如下 public class myClass private x new anotherClass private y public myClass y new anotherClass 哪个变量会更早获得实例 x 或 y
  • android-透明RelativeLayout

    我想要制作一个具有可绘制渐变作为背景的活动 并将在其背景顶部显示 4 个面板 相对布局 现在我想让 4 个面板透明 例如 50 以便也可以看到渐变背景 我搜索了谷歌 但我发现只能通过活动而不是布局来做到这一点 如何做我想做的事 您可以创建一
  • 在 Java 中使用 Apache POI XWPF 在同一个 Word 文档中横向和纵向页面

    我正在尝试使用 Java 和 Apache POI 库创建一个包含一些横向页面和一些纵向页面的 Word 文档 我可以更改所有页面的方向 但有没有办法只更改其中某些页面的方向 我尝试过使用不同的部分和主体 但无济于事 目前我已经编写了一个函
  • 将对象列表传递给 Freemarker 然后循环

    我已经熟悉了 FreeMarker 一个 Java 模板引擎 我已经能够通过哈希映射将对象传递给模板引擎了 这样就可以了 但是 一旦我尝试将任何类型的多个对象集传递给 FreeMarker 它就会给我一个 freemarker templa
  • Spring 可以理解 @Inject 替换 Weld 作为 JSR-299 实现吗?

    我从几个网页中注意到 Spring 3 0 显然支持来自 JSR 330 的 Inject 由于我们确实希望在 Web 应用程序和独立应用程序的库中使用 JSR 299 语法进行依赖项注入 并且有 Weld 的替代方案 因此如果 Sprin
  • 使用 Spring 注入 Google Guava Hashmultimap

    是否可以提供一个创建示例Multimap
  • 摆动刷新周期

    我试图了解何时使用重新验证 重绘 打包 令人惊讶的是 我没有找到详细的底层文档 请随意链接 到目前为止我已经明白这都是 RepaintManager 的责任 油漆 重新油漆指的是脏 干净的东西 pack validate revalidat
  • 如何从 REstAssured 中的 Json 数组获取 JSON 对象

    任何人都可以帮我解决这个场景 我是新来的RestAssured和处理JSON在我们的自动化脚本中 我有一个API谁的回应是JSONArray i e id 1002 entity testcase fieldName TextName di
  • 根据结果​​重试方法(而不是异常)

    我有一个具有以下签名的方法 public Optional
  • 为什么 Libgdx 的 Table 不接受缩放操作?

    我在 libgdx 库中使用 scene2d 在游戏中创建一些 UI 我使用了一个表格 我想在用户触摸时采取一些缩放操作以使按钮触摸有意义 当我使用任何其他 Actor 类型 例如 Group 并为其提供缩放操作时 它可以工作 但不能工作表
  • Java可以进行进程监控吗?

    是否可以用Java编写一个在托盘中运行的应用程序 并且当启动某个应用程序时 它可以检测到它 我想对某些程序执行此操作 以了解我每周使用它们多长时间 我是 Java 新手 所以我不知道 Java 是否是最适合此操作的语言 或者它是否具有对操作
  • 在 Java Web 应用程序中获取 DataSource 资源

    我的 context xml 文件中有以下资源标记
  • 如何使用SAXReader解析GPX文件?

    我正在尝试解析GPX file http en wikipedia org wiki GPS eXchange Format 我用 JDOM 尝试过 但效果不太好 SAXBuilder builder new SAXBuilder Docu
  • Ant 类路径和 junit.jar

    我有一个 build xml 它允许我运行 junit 测试 这是相关部分
  • 如何更改MultipartFile的originalFilename

    我在服务器端有一个 MultipartFile 文件 我想更改该文件的原始文件名 但该类仅支持 getOriginalFilename 谁能帮我这个 PS 上传的是图片文件 多谢 您可以使用 MockMultipartFile 类更改名称
  • 如何获取 EC2 实例的 CloudWatch 指标数据

    我想获取我的 EC2 实例的 Cloudmetrics 数据 以便我可以使用这些数据绘制图表并将其显示在我的 Android 设备上 我怎么做 有相同的示例程序或教程吗 提前致谢 这就是我正在做的 private static void f

随机推荐