精华内容
下载资源
问答
  • 主要为大家详细解析了微信公众平台开发之获得ACCESSTOKEN .Net代码,感兴趣的小伙伴们可以参考一下
  • 1,打开项目网址 2,点击右边头像,选择Settings——》Access Tokens,填写名字和期限,下面全部打... 3,打开项目首页,选择项目地址,按照如下规格进行拼装: 假如我们获得的Tokens为:abcdefg ...拼接之后的git clone

    1,打开项目网址
    2,点击右边头像,选择Settings——》Access Tokens,填写名字和期限,下面全部打钩,点击下方“create personal access token”,会得到一个“Your New Personal Access Token”里面的字符串,复制下来保存备用。
    设置界面
    3,打开项目首页,选择项目地址,按照如下规格进行拼装:
    假如我们获得的Tokens为:abcdefg
    项目的HTTPS下载地址为:https://git.com/ab/abc.git
    拼接之后的git clone 地址为:https://oauth2:abcdefg@git.com/ab/abc.git

    展开全文
  • Delphi 10 Android版百度开放平台OAuth2.0(开放授权)取AccessToken delphi代码,绝对可用。 注意:1.要在project->deployment->增加\baidu_Lib\libs三个文件 2.要在project的libraries中增加\baidu_Lib\libs三个...
  • 1、获取微信小程序AccessToken准备工作? **请求URL:**https://api.weixin.qq.com/cgi-bin/token 所需参数: 1、grant_type 默认写死为 client_credential 2、appid 你小程序的APPID 3、secret 你小程序的 secret...

    1、获取微信小程序AccessToken准备工作?

    1. **请求URL:**https://api.weixin.qq.com/cgi-bin/token
    2. 所需参数: 1、grant_type 默认写死为 client_credential 2、appid 你小程序的APPID 3、secret 你小程序的 secret

    2、Java发送Http请求工具类封装

    import com.alibaba.fastjson.JSON;
    import com.dftcmedia.tckk.microservice.sskx.microapp.util.WeiXinResponseWrapper;
    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.NameValuePair;
    import org.apache.commons.httpclient.methods.GetMethod;
    import org.apache.commons.httpclient.methods.PostMethod;
    import org.apache.commons.httpclient.methods.RequestEntity;
    import org.apache.commons.httpclient.methods.StringRequestEntity;
    
    import java.io.IOException;
    
    /**
     * WeixinClient
     *
     * @author
     * @date 2019/3/13
     */
    public class WeiXinClientUtil {
    
        private WeiXinClientUtil() {
        }
    
        public static WeiXinResponseWrapper sendGetRequest(String path, NameValuePair[] pairs) throws IOException {
            HttpClient client = new HttpClient();
            GetMethod method = new GetMethod();
            method.setPath(path);
            method.setQueryString(pairs);
            client.executeMethod(method);
            byte[] bytes = method.getResponseBody();
            return WeiXinResponseWrapper.wrap(JSON.parseObject(new String(bytes)));
        }
    
        public static WeiXinResponseWrapper sendPostRequest(String path, NameValuePair[] pairs, String body) throws IOException {
            HttpClient client = new HttpClient();
            PostMethod method = new PostMethod();
            method.setPath(path);
            method.setQueryString(pairs);
            RequestEntity entity = new StringRequestEntity(body, "application/json", "utf-8");
            method.setRequestEntity(entity);
            client.executeMethod(method);
            byte[] bytes = method.getResponseBody();
            return WeiXinResponseWrapper.wrap(JSON.parseObject(new String(bytes)));
        }
    
    }
    

    WeiXinResponseWrapper 是调用微信url的响应结果分装类

    3、WeiXinResponseWrapper 类代码

    import com.alibaba.fastjson.JSONObject;
    import lombok.AllArgsConstructor;
    import lombok.Data;
    
    /**
     * WeiXinResponseWrapper
     *
     * @author
     * @date 2019/3/13
     */
    @Data
    @AllArgsConstructor
    public class WeiXinResponseWrapper {
    
        private String errCode;
        private String errMsg;
        private JSONObject data;
    
        public static WeiXinResponseWrapper wrap(JSONObject jo) {
            return new WeiXinResponseWrapper(jo.getString("errcode"), jo.getString("errmsg"), jo);
        }
    
        public boolean isRequestSucceed() {
            return errCode==null||"0".equals(errCode);
        }
    
        public String get(String key) {
            return data.getString(key);
        }
    }
    

    4、获取AccessToken方法

    public String getAccessToken() {
            NameValuePair[] params = new NameValuePair[]{
                    new NameValuePair("grant_type", "client_credential"),
                    new NameValuePair("appid", properties.getAppId()),
                    new NameValuePair("secret", properties.getSecret())
            };
            WeiXinResponseWrapper response = null;
            try {
                response = WeiXinClientUtil.sendGetRequest(WeiXinConstant.ACCESS_TOKEN, params);
            } catch (IOException e) {
                throw new ApiException(ServiceCodeEnum.SERVER_INTERNAL_ERROR);
            }
            if (!response.isRequestSucceed()) {
                log.error(response.getErrCode()+response.getErrMsg());
                throw new ApiException(ServiceCodeEnum.LIMIT);
            }
            return response.getData().getString("access_token");
        }
    
    
    
    
    ```java
    /**
     * WeiXinConstant
     *
     * @author
     * @date 2019/3/13
     */
    public class WeiXinConstant {
    
        public static final String LOGIN_GRAND_TYPE = "authorization_code";
        public static final String ACCESS_TOKEN_GRAND_TYPE = "client_credential";
    
        public static final String ACCESS_TOKEN_PATH = "https://api.weixin.qq.com/sns/jscode2session";
    
        public static final String ACCESS_TOKEN= "https://api.weixin.qq.com/cgi-bin/token";
        public static final String IMG_FILTER_URL= "https://api.weixin.qq.com/wxa/img_sec_check";
        public static final Long ACCESS_TOKEN_EXPIRE_TIME=7000L;
    
    
    
    }
    
    
    ```java
    @EqualsAndHashCode(callSuper = true)
    @Data
    public class ApiException extends RuntimeException {
        private static final long serialVersionUID = -3005819231762830260L;
        public ApiException(ServiceCodeEnum codeEnum) {
            super(codeEnum.getMessage());
            this.errorCode = codeEnum.getCode();
        }
    
        public ApiException(Integer code, String message) {
            super(message);
            this.errorCode = code;
            this.data = null;
        }
    
        public ApiException(Integer code, String message, Object data) {
            super(message);
            this.errorCode = code;
            this.data = data;
        }
    
        private Integer errorCode;
    
        private Object data;
    }
    
    @Getter
    public enum ServiceCodeEnum {
        /**
         *
         */
        SUCCESS(0, "成功"),
    
        /**
         * 失败
         */
        FAIL(1, "失败"),
    
        /**
         * 无效请求
         */
        BAD_REQUEST(400, "无效请求"),
    
    
    
        ServiceCodeEnum(Integer code, String message) {
            this.code = code;
            this.message = message;
        }
    
        private Integer code;
    
        private String message;
    }
    
    
    展开全文
  • ApiBoot Security内部提供了两种方式进行读取需要认证的用户信息,在之前的文章中讲到过ApiBoot Security使用内存方式(memory)不写一行代码就可以实现用户的认证并获取AccessToken,那我们使用JDBC方式是不是也是...

    ApiBoot Security内部提供了两种方式进行读取需要认证的用户信息,在之前的文章中讲到过ApiBoot Security使用内存方式(memory)不写一行代码就可以实现用户的认证并获取AccessToken,那我们使用JDBC方式是不是也是这么的简单呢?

    如果你还对ApiBoot不了解,可以通过以下的途径来获取帮助。

    ApiBoot Security的认证方式

    有一些同学可能对ApiBoot Security的两种认证方式还不太了解,下面介绍下这两种认证方式的区别。

    内存方式

    内存方式(memory)是将用户信息(用户名、密码、角色列表)在application.yml文件内配置,可配置多个用户,项目启动后将用户信息加载到内存中,用于获取AccessToken时的认证。

    数据库方式

    数据库方式(jdbc)是将用户信息保存到数据库内,ApiBoot Security定义了一个默认表结构的用户信息数据表,我们可以从官网找到建表语句直接在自己的数据库内创建即可,当然如果不使用默认的表结构可以进行自定义读取用户信息。

    注意:在数据库内存放用户的密码必须是通过BCryptPasswordEncoder加密后的密文字符串。

    创建项目

    ApiBoot Security的两种认证方式概念明白后,我们开始说下怎么才能使用JDBC方式进行用户认证,我们先来使用IDEA开发工具创建一个SpringBoot项目。

    添加ApiBoot统一版本

    在使用ApiBoot内提供的组件依赖时,首先我们需要在pom.xml文件内添加ApiBoot统一版本,如下所示:

    <properties>
        <java.version>1.8</java.version>
        <!--ApiBoot版本号-->
        <apiboot.version>2.1.5.RELEASE</apiboot.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <!--ApiBoot版本依赖-->
            <dependency>
                <groupId>org.minbox.framework</groupId>
                <artifactId>api-boot-dependencies</artifactId>
                <version>${apiboot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

    添加ApiBoot Security依赖

    在项目pom.xml文件添加ApiBoot Security依赖,如下所示:

    <!--ApiBoot Security OAuth-->
    <dependency>
      <groupId>org.minbox.framework</groupId>
      <artifactId>api-boot-starter-security-oauth-jwt</artifactId>
    </dependency>
    

    添加JDBC相关依赖

    我们本章使用MySQL数据库做演示,我们需要添加相关的数据库依赖以及数据库连接池依赖,由于ApiBoot Security读取内置的默认用户表结构使用的是DataSource,所以我们还需要添加一个可以实例化DataSource的依赖,可以选择api-boot-starter-mybatis-enhance或者spring-boot-starter-jdbc,在pom.xml添加依赖如下所示:

    <!--SpringBoot Web-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--MySQL-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>
    
    <!--Hikari-->
    <dependency>
      <groupId>com.zaxxer</groupId>
      <artifactId>HikariCP</artifactId>
    </dependency>
    <!--SpringBoot JDBC-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    

    注意:spring-boot-starter-web这个依赖不可少,在ApiBoot AutoConfiguration内需要一些Web的依赖类。

    创建默认用户表结构

    本章使用ApiBoot Security提供的默认用户表结构,访问官方文档查看3.3 使用内置表结构的用户,将建表语句在自己数据库内执行创建表信息,创建后添加一条用户信息,如下所示:

    INSERT INTO `api_boot_user_info` VALUES (1,'admin','昵称','$2a$10$RbJGpi.v3PwkjrYENzOzTuMxazuanX3Qa2hwI/f55cYsZhFT/nX3.',NULL,NULL,NULL,'N','Y','O','2019-11-29 06:14:44');
    

    配置数据源

    依赖添加完成后我们在application.yml配置文件内进行配置数据源,如下所示:

    spring:
      application:
        name: apiboot-security-customize-select-user
      # 数据源配置
      datasource:
        type: com.zaxxer.hikari.HikariDataSource
        url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&serverTimezone=Asia/Shanghai
        username: root
        password: 123456
        driver-class-name: com.mysql.cj.jdbc.Driver
    server:
      port: 9090
    

    配置ApiBootSecurity JDBC方式

    由于ApiBoot Security默认使用memory用户认证读取方式,我们需要在application.yml文件内进行修改,如下所示:

    # ApiBoot相关配置
    api:
      boot:
        # 启用ApiBoot Security 的JDBC方式
        security:
          away: jdbc
    

    运行测试

    项目配置完成,下面我们通过XxxApplication方式启动项目。

    在获取AccessToken之前我们要知道的一点,ApiBoot Security内部默认集成了OAuth2,而且还默认配置了clientIdclientSecret客户端基本信息,默认值分别是ApiBootApiBootSecret

    clientId = ApiBoot
    clientSecret = ApiBootSecret
    

    如果你对ApiBoot OAuth其他功能有兴趣可以查看ApiBoot OAuth文档了解详情。

    获取AccessToken

    由于学习者的本机环境不同,下面采用两种方式进行获取AccessToken

    CURL方式

    执行如下命令获取AccessToken

    ➜ ~ curl -X POST ApiBoot:ApiBootSecret@localhost:9090/oauth/token\?grant_type\=password\&username\=admin\&password\=123456
    {"access_token":"d9cb97ee-d1bf-42e1-a7a0-c1002df48c52","token_type":"bearer","refresh_token":"db9e9d52-cbe3-4379-a5f2-ffaa34681c01","expires_in":2884,"scope":"api"}
    

    PostMan方式

    4461954-74d1576b0e2de3d8.png

    注意:获取AccessToken的请求方式为POST.

    敲黑板,划重点

    ApiBoot Security不仅内存方式可以实现零代码的方式进行集成Spring SecurityOAuth2JDBC方式同样也可以,不过要根据ApiBoot的约定创建用户表。

    代码示例

    本篇文章示例源码可以通过以下途径获取,目录为SpringBoot2.x/apiboot-security-customize-select-user

    4461954-53cc75971ef7e76d.png

    作者个人 博客
    使用开源框架 ApiBoot 助你成为Api接口服务架构师

    展开全文
  • 微信accessToken获取

    2020-04-21 11:42:53
    获取accessToken工具...java获取代码 package com.yzf.mall.services.support.util; import cn.hutool.core.lang.Dict; import com.yzf.mall.core.execption.BusinessException; import c...

    获取accessToken工具 https://mp.weixin.qq.com/debug/

    java获取代码

    package com.yzf.mall.services.support.util;
    
    import cn.hutool.core.lang.Dict;
    import com.yzf.mall.core.execption.BusinessException;
    import com.yzf.mall.core.utils.JsonUtils;
    import io.micronaut.core.util.StringUtils;
    import java.io.IOException;
    import org.apache.http.HttpEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.ContentType;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public class WxCommonUtils {
    
      private static CloseableHttpClient httpclient = HttpClients.createDefault();
    
      private static final Logger LOGGER = LoggerFactory.getLogger(WxCommonUtils.class);
    
      //获取token接口(GET)
      public final static String GET_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APP_ID&secret=APP_SECRET";
    
      private static String CHAR_SET = "UTF-8";
    
      /**
       * 获取接口访问凭证
       *
       * @param appId 凭证
       * @param appSecret 密钥
       * @return token
       */
      public static Token getToken(String appId, String appSecret) throws IOException {
        Token token = null;
        String requestUrl = GET_TOKEN_URL.replace("APP_ID", appId).replace("APP_SECRET", appSecret);
        // 发起GET请求获取凭证
        String response = HttpClient.doGetString(requestUrl);
        // 相应结果转化为json,为了取值
        Dict res = JsonUtils.parseBean(response, Dict.class);
        if (null != res) {
          if (StringUtils.isNotEmpty(res.getStr("errcode"))) {
            LOGGER.error("getToken failed, response = {}", response);
            throw new BusinessException("", "获取wxToken失败!!");
          }
          token = new Token();
          // 真正用的值是access_token,expires_in可用来设置access_token缓存时间
          token.setAccessToken(res.getStr("access_token"));
          token.setExpiresIn(res.getInt("expires_in"));
        }
        return token;
      }
    
      public static String doGetString(String url) throws IOException {
        HttpGet httpGet = new HttpGet(url);
        try (CloseableHttpResponse response = httpclient.execute(httpGet)) {
          HttpEntity entity = response.getEntity();
          return EntityUtils.toString(entity, CHAR_SET);
        }
      }
    
      public static String doPostString(String url, String body, ContentType contentType)
        throws IOException {
        HttpPost httpPost = new HttpPost(url);
        if (body != null) {
          httpPost.setEntity(new StringEntity(body, contentType));
        }
        try (CloseableHttpResponse response = httpclient.execute(httpPost)) {
          HttpEntity entity = response.getEntity();
          return EntityUtils.toString(entity, CHAR_SET);
        }
      }
    
    }
    
    class Token {
    
      private String accessToken;
    
      private int expiresIn;
    
      public String getAccessToken() {
        return accessToken;
      }
    
      public void setAccessToken(String accessToken) {
        this.accessToken = accessToken;
      }
    
      public int getExpiresIn() {
        return expiresIn;
      }
    
      public void setExpiresIn(int expiresIn) {
        this.expiresIn = expiresIn;
      }
    }

    获取是有白名单限制的,需要在公众平台的基本配置中添加

    展开全文
  • 请点击第一篇文章进行查看,成为了开发者之后微信平台会给您appid和secret,在订阅号中是没有的,所以因该申请一下服务号,有了ACCESSTOKEN才能做添加菜单,上传/下载图片等功能。private string GetToken(){// 也...
  • 资源可以获得微信的AccessToken,不会每次都...使用时需要创建一个wxAccessToken.properties配置文件,在代码中修改路径能够读到就好了。然后在调用String accessToken = AccessTokenUtil.getAccessToken() 就可以。
  • Java版获取accessToken

    2016-05-10 21:02:27
    Java版实时获取accessToken
  • 定义一个实体类,存放accessToken和过期时间 package com.zhu.information; public class AccessToken { private String accessToken; private long expireTime; public String getAccessToken() { return ...
  • Java获取微信AccessToken

    千次阅读 2018-06-17 00:48:13
    使用 Java 获取微信开发中需要用到的 AccessToken,超精简~需要准备的东西:appid、secret (均可在微信公众平台后台获取)我使用了 Spring Boot 作为开发框架。建项目等基本步骤就跳过啦,直接上核心代码 ~ ...
  • 2. 示例代码 1. AccessToken介绍 1.1 什么是AccessToken AccessToken即访问凭证,业务服务器每次主动调用企业号接口时需要带上AccessToken参数。 注:主动调用是指业务服务器调用企业号接口的操作过程,如...
  • 获取微信 accesstoken

    2016-12-19 14:15:06
    php根据appid和secret获取... 微信公众号开启开发者模式,使用appid和secret请求微信获取accesstoken的接口路径,就可以了, 代码如下: $appid = 'wx422126b0b6bbfcfc'; $secret = '***'; $url = "https
  • 缓存微信accesstoken实现

    千次阅读 2017-02-16 16:13:45
    accesstoken保存再redis中,设置失效时间,并在代码中检测是否有缓存值,没有则去获取并更新redis。但会出现一个问题,在多进程的模式下,会出现并发去获取accesstoken的场景,这样会导致前边的值失效,但前边的值...
  • 微信企业号开发:获取AccessToken

    千次阅读 2015-07-21 09:47:50
    微信企业号开发,需要调用微信企业号的相关接口,则必须使用AccessToken,但AccessToken需要corpid,corpsecret两个参数调用相关接口才能获取。而且每一个接口都有一定的次数限制,当然获取AccessToken的接口也有这...
  • 定时获取AccessToken——萤石开放平台

    千次阅读 2018-01-19 11:05:33
    那么问题就来了:当一个项目部署之后,我们不可能在使用人工去获取accessToken,只能通过代码自动定时获取accessToken。那么怎样去自动获取? 对于自动获取accessToken,我们想到了使用多线程去获取AccessT
  • 3、AccessToken拉取代码 4、声明与参考资料 『GIT·AccessToken的基础使用』 编写人 | SCscHero 编写时间 | 2021/8/10 PM7:40 文章类型 | 系列 完成度 | 已完成 座右铭 每一个伟大的事业,都有...
  • PHP获取微信 accesstoken

    2016-12-19 20:16:59
    PHP根据appid和secret获取微信access_token,php通过curl远程获取微信access_token信息微信公众号开启开发者模式,使用appid和secret请求微信获取accesstoken的接口路径,就可以了;代码如下: ...
  • 微信小程序获取accessToken方法

    千次阅读 2019-11-01 18:21:51
    微信小程序现在成为了增长模式的宠儿,小程序的便利想必看这篇博客的各位都已经了解到了,本篇呢主要介绍小程序里面获取accessToken的方法。 其中涉及关键词: accessToken:通过用户验证登录和授权,获取Access ...
  • 微信获取accesstoken

    2019-07-12 10:18:07
    3. Java 代码实现 import com . google . gson . JsonObject ; import org . apache . commons . lang . StringUtils ; import org . slf4j . Logger ; import org . slf4j . LoggerFactory ; import...
  • 公众号开发-AccessToken获取 是一个非常重要的东西,你的服务于微信服务器的交互的令牌所有请求都需要带上该参数,否则你将无法于微信服务器交交互 AccessToken介绍 AccessToken是与微信服务器交互的令牌,...
  • 微信企业号开发之获取AccessToken

    千次阅读 2015-05-13 14:55:20
    在做企业号开发的时候,很有可能会调用微信提供的js接口(JS-SDK),但是调用微信js接口需要使用临时票据jsapi_ticket,而jsapi_ticket又是通过AccessToken来获取,那么AccessToken怎么得到呢?微信官方提供了以下...
  • 中控服务器accesstoken

    千次阅读 2016-04-07 00:03:42
    AccessToken accessToken;       @Override   public void run()   {   while ( true )   {   try {   AccessToken token = ...
  • 使用springboot框架集成, 因为涉及到业务方面的代码, 本篇博文没有写怎么获取access_token ,获取access_token的方法网上一大片, 随便copy一个就可以了, 本文主要讲解如何集成redis, 然后写入,查询,实现多个地方共享...
  • 微信公众平台接口需要获取accessToken,需要的参数是appid以及appsecret。接下来我用php来实现这一过程。 你只需要把代码中define的APPID与APPSERCET替换成你的id与serect &lt;?php //代码、文档维护:2ZW /...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,802
精华内容 5,920
关键字:

accesstoken代码