手机版

百科生活 投稿

此公众号没有scope权限10005,此公众号没有并没有这些scope权限(Spring)

百科 2025-12-27 23:05:06 投稿 阅读:6930次

关于【此公众号没有scope权限10005】,此公众号没有并没有这些scope权限,今天小编给您分享一下,如果对您有所帮助别忘了关注本站哦。

  • 内容导航:
  • 1、此公众号没有scope权限10005:此公众号没有并没有这些scope权限,错误码1005
  • 2、Spring Cloud Bus 消息总线介绍

1、此公众号没有scope权限10005:此公众号没有并没有这些scope权限,错误码1005

如果出现提示:此公众号没有并没有这些scope权限,错误码1005,该怎么办?本文将做介绍。

操作方法

出现这问题有以下原因:
1、订阅号没有相关的权限
2、账号没有认证,没有相关的权限
3、scope 参数位置错误

首先检查您的微信号是服务号还是订阅号,如果是订阅号恭喜你中奖了,因为腾讯没开放接口出来。

确保你已是服务号,且已通过微信认证。如果没有通过认证,就需要从新登录去认证一次。

如果是配置错误,就需要修改为正确配置。

原因就是scope的位置不一样!!!
当 scope 为 snsapi_base的时候没有影响。但是scope为snsapi_userinfo 就会提示 scope参数错误或没有scope权限

2、Spring Cloud Bus 消息总线介绍

在 Spring 生态中玩转 RocketMQ 系列文章:

  • 《如何在 Spring 生态中玩转 RocketMQ?》
  • 《罗美琪和春波特的故事...》
  • 《RocketMQ-Spring 毕业两周年,为什么能成为 Spring 生态中最受欢迎的 messaging 实现?》
  • 《使用 rocketmq-spring-boot-starter 来配置、发送和消费 RocketMQ 消息》
  • 《Spring Cloud Stream 体系及原理介绍》

Spring Cloud Bus 对自己的定位是 Spring Cloud 体系内的消息总线,使用 message broker 来连接分布式系统的所有节点。Bus 官方的 Reference 文档 比较简单,简单到连一张图都没有。

这是最新版的 Spring Cloud Bus 代码结构(代码量比较少):

此公众号没有scope权限10005,此公众号没有并没有这些scope权限(Spring)

Bus 实例演示

在分析 Bus 的实现之前,我们先来看两个使用 Spring Cloud Bus 的简单例子。

1. 所有节点的配置新增

Bus 的例子比较简单,因为 Bus 的 AutoConfiguration 层都有了默认的配置,只需要引入消息中间件对应的 Spring Cloud Stream 以及 Spring Cloud Bus 依赖即可,之后所有启动的应用都会使用同一个 Topic 进行消息的接收和发送。

Bus 对应的 Demo 已经放到了 github 上, 该 Demo 会模拟启动 5 个节点,只需要对其中任意的一个实例新增配置项,所有节点都会新增该配置项。

Demo 地址:https://github.com/fangjian0423/rocketmq-binder-demo/tree/master/rocketmq-bus-demo

访问任意节点提供的 Controller 提供的获取配置的地址(key 为hangzhou):

curl -X GET 'http://localhost:10001/bus/env?key=hangzhou'

所有节点返回的结果都是 unknown,因为所有节点的配置中没有hangzhou这个 key。

Bus 内部提供了EnvironmentBusEndpoint这个 Endpoint 通过 message broker 用来新增/更新配置。

访问任意节点该 Endpoint 对应的 url: /actuator/bus-env?name=hangzhou&value=http://www.029ztxx.com/tg/alibaba 进行配置项的新增(比如访问 node1 的url):

curl -X POST 'http://localhost:10001/actuator/bus-env?name=hangzhou&value=http://www.029ztxx.com/tg/alibaba' -H 'content-type: application/json'

然后再次访问所有节点/bus/env获取配置:

$ curl -X GET 'http://localhost:10001/bus/env?key=hangzhou'unknown%~ ⌚$ curl -X GET 'http://localhost:10002/bus/env?key=hangzhou'unknown%~ ⌚$ curl -X GET 'http://localhost:10003/bus/env?key=hangzhou'unknown%~ ⌚$ curl -X GET 'http://localhost:10004/bus/env?key=hangzhou'unknown%~ ⌚$ curl -X GET 'http://localhost:10005/bus/env?key=hangzhou'unknown%~ ⌚$ curl -X POST 'http://localhost:10001/actuator/bus-env?name=hangzhou&value=http://www.029ztxx.com/tg/alibaba' -H 'content-type: application/json'~ ⌚$ curl -X GET 'http://localhost:10005/bus/env?key=hangzhou'alibaba%~ ⌚$ curl -X GET 'http://localhost:10004/bus/env?key=hangzhou'alibaba%~ ⌚$ curl -X GET 'http://localhost:10003/bus/env?key=hangzhou'alibaba%~ ⌚$ curl -X GET 'http://localhost:10002/bus/env?key=hangzhou'alibaba%~ ⌚$ curl -X GET 'http://localhost:10001/bus/env?key=hangzhou'alibaba%

可以看到,所有节点都新增了一个 key 为hangzhou的配置,且对应的 value 是alibaba。这个配置项是通过 Bus 提供的 EnvironmentBusEndpoint 完成的。

这里引用 程序猿DD 画的一张图片,Spring Cloud Config 配合 Bus 完成所有节点配置的刷新来描述之前的实例(本文实例不是刷新,而是新增配置,但是流程是一样的):

此公众号没有scope权限10005,此公众号没有并没有这些scope权限(Spring)

2. 部分节点的配置修改

比如在 node1 上指定 destination 为 rocketmq-bus-node2 ( node2 配置了 spring.cloud.bus.id 为rocketmq-bus-node2:10002,可以匹配上) 进行配置的修改:

curl -X POST 'http://localhost:10001/actuator/bus-env/rocketmq-bus-node2?name=hangzhou&value=http://www.029ztxx.com/tg/xihu' -H 'content-type: application/json'

访问/bus/env 获取配置(由于在 node1 上发送消息,Bus 也会对发送方的节点 node1 进行配置修改):

~ ⌚$ curl -X POST 'http://localhost:10001/actuator/bus-env/rocketmq-bus-node2?name=hangzhou&value=http://www.029ztxx.com/tg/xihu' -H 'content-type: application/json'~ ⌚$ curl -X GET 'http://localhost:10005/bus/env?key=hangzhou'alibaba%~ ⌚$ curl -X GET 'http://localhost:10004/bus/env?key=hangzhou'alibaba%~ ⌚$ curl -X GET 'http://localhost:10003/bus/env?key=hangzhou'alibaba%~ ⌚$ curl -X GET 'http://localhost:10002/bus/env?key=hangzhou'xihu%~ ⌚$ curl -X GET 'http://localhost:10001/bus/env?key=hangzhou'xihu%

可以看到,只有 node1 和 node2 修改了配置,其余的 3 个节点配置未改变。

Bus 的实现

1. Bus 概念介绍

1)事件

Bus 中定义了远程事件RemoteApplicationEvent,该事件继承了 Spring 的事件ApplicationEvent,而且它目前有 4 个具体的实现:

此公众号没有scope权限10005,此公众号没有并没有这些scope权限(Spring)

  • EnvironmentChangeRemoteApplicationEvent:远程环境变更事件。主要用于接收一个 Map 类型的数据并更新到 Spring 上下文中 Environment 中的事件。文中的实例就是使用这个事件并配合 EnvironmentBusEndpoint 和 EnvironmentChangeListener 完成的。
  • AckRemoteApplicationEvent:远程确认事件。Bus 内部成功接收到远程事件后会发送回AckRemoteApplicationEvent确认事件进行确认。
  • RefreshRemoteApplicationEvent: 远程配置刷新事件。配合 @RefreshScope 以及所有的 @ConfigurationProperties注解修饰的配置类的动态刷新。
  • UnknownRemoteApplicationEvent:远程未知事件。Bus 内部消息体进行转换远程事件的时候如果发生异常会统一包装成该事件。

Bus 内部还存在一个非RemoteApplicationEvent事件 -SentApplicationEvent消息发送事件,配合 Trace 进行远程消息发送的记录。

这些事件会配合ApplicationListener进行操作,比如EnvironmentChangeRemoteApplicationEvent配了EnvironmentChangeListener进行配置的新增/修改:

public class EnvironmentChangeListener implements ApplicationListener { private static Log log = LogFactory.getLog(EnvironmentChangeListener.class); @Autowired private EnvironmentManager env; @Override public void>

  • 利用 Spring 事件的监听机制监听本地所有的RemoteApplicationEvent远程事件(比如bus-env会在本地发送EnvironmentChangeRemoteApplicationEvent事件,bus-refresh会在本地发送RefreshRemoteApplicationEvent事件,这些事件在这里都会被监听到)。
  • 判断本地接收到的事件不是AckRemoteApplicationEvent远程确认事件(不然会死循环,一直接收消息,发送消息...)以及该事件是应用自身发送出去的(事件发送方是应用自身),如果都满足执行步骤 3。
  • 构造 Message 并将该远程事件作为 payload,然后使用 Spring Cloud Stream 构造的 Binding name 为 springCloudBusOutput 的 MessageChannel 将消息发送到 broker。
  • 4.@StreamListener注解消费 Spring Cloud Stream 构造的 Binding name 为 springCloudBusInput 的 MessageChannel,接收的消息为远程消息。

    1. 如果该远程事件是AckRemoteApplicationEvent远程确认事件并且应用开启了消息追踪 trace 开关,同时该远程事件不是应用自身发送的(事件发送方不是应用自身,表示事件是其它应用发送过来的),那么本地发送AckRemoteApplicationEvent远程确认事件表示应用确认收到了其它应用发送过来的远程事件,流程结束。
    2. 如果该远程事件是其它应用发送给应用自身的(事件的接收方是应用自身),那么进行步骤 7 和 8,否则执行步骤 9。
    3. 该远程事件不是应用自身发送(事件发送方不是应用自身)的话,将该事件以本地的方式发送出去。应用自身一开始已经在本地被对应的消息接收方处理了,无需再次发送。
    4. 如果开启了AckRemoteApplicationEvent远程确认事件的开关,构造AckRemoteApplicationEvent事件并在远程和本地都发送该事件(本地发送是因为步骤 5 没有进行本地AckRemoteApplicationEvent事件的发送,也就是自身应用对自身应用确认; 远程发送是为了告诉其它应用,自身应用收到了消息)。
    5. 如果开启了消息记录 Trace 的开关,本地构造并发送SentApplicationEvent事件。

    此公众号没有scope权限10005,此公众号没有并没有这些scope权限(Spring)

    bus-env触发后所有节点的EnvironmentChangeListener监听到了配置的变化,控制台都会打印出以下信息:

    o.s.c.b.event.EnvironmentChangeListener : Received remote environment change request. Keys/values to update {hangzhou=alibaba}

    如果在本地监听远程确认事件 AckRemoteApplicationEvent,都会收到所有节点的信息,比如 node5 节点的控制台监听到的 AckRemoteApplicationEvent事件如下:

    本文关键词:此公众号并没有这些scope的权限,怎样设置,此公众号没有scope的权限,微信公众号提示没有scope权限?,此公众号没有并没有这些scope权限,错误码10005,此公众号没有并没有这些scope权限,错误码1005。这就是关于《此公众号没有scope权限10005,此公众号没有并没有这些scope权限(Spring)》的所有内容,希望对您能有所帮助!

    本文链接:https://bk.89qw.com/a-721322

    最近发表
    网站分类