zoukankan      html  css  js  c++  java
  • 基于senparc实现的微信AccessToken接口全局统一获取

    在senparc中实现了AccessToken的全局获取方式,因微信项目涉及跨语言、跨团队,外包方式的合作,需要通过接口方式供合作方调用,现将使用webapi实现的接口分享给大家:

    1、自定义一个对外统一的AccessToken

        /// <summary>
            /// 自定义一个对外统一的AccessToken
            /// </summary>
            [Serializable]
            public class MPAccessTokenInfo
            {
                /// <summary>
                /// 获取到的凭证
                /// </summary>
                public string AccessToken { get; set; }
    
                /// <summary>
                /// 凭证到什么时间过期
                /// </summary>
                public DateTime AccessTokenExpireTime { get; set; }
            }

    2、接口方法

    //-----------------------------------------------------------------------
    // <copyright file="WechatOpenController.cs" company="FenSiShengHuo, Ltd.">
    //     Copyright (c) 2018 , All rights reserved.
    // </copyright>
    //-----------------------------------------------------------------------
    
    using Senparc.Weixin.Open.Containers;
    using System;
    using System.Web.Http;
    
    namespace DotNet.WeChat.API.Controllers
    {
        using DotNet.Utilities;
        using DotNet.WeChat.API.Common;
        using Senparc.Weixin.Containers;
        using Senparc.Weixin.MP.Containers;
        using Senparc.Weixin.Open.ComponentAPIs;
    
        /// <summary>
        /// WechatOpenController
        /// 
        /// 修改纪录
        /// 
        /// 2018-07-27 版本:1.0 JiShiYu 创建文件。   
        /// 
        /// <author>
        ///     <name>JiShiYu</name>
        ///     <date>2018-07-27</date>
        /// </author>
        /// </summary>
    
        public class WechatController : ApiController
        {
            /// <summary>
            /// 获取微信调用的Token 公众号的方式
            /// </summary>
            /// <returns></returns>
            public JsonResult<MPAccessTokenInfo> GetMPAccessToken()
            {
                JsonResult<MPAccessTokenInfo> result = new JsonResult<MPAccessTokenInfo>();
                result.Status = false;
                result.StatusMessage = "没有获取到";
                try
                {
                    var accessTokenResult = AccessTokenContainer.GetAccessTokenResult(GlobalSetting.WeixinAppId);
                    var accessTokenBag = BaseContainer<AccessTokenBag>.TryGetItem(GlobalSetting.WeixinAppId);
                    MPAccessTokenInfo info = new MPAccessTokenInfo();
                    info.AccessToken = accessTokenResult.access_token;
                    info.AccessTokenExpireTime = accessTokenBag.AccessTokenExpireTime;
                    result.Status = true;
                    result.Data = info;
                    result.StatusMessage = "成功获取";
                }
                catch (Exception ex)
                {
                    NLogHelper.Warn(ex, "WechatOpenController : ApiController GetAccessToken");
                    result.Status = false;
                    result.StatusMessage = "异常:" + ex.Message;
                }
    
                return result;
            }
    
        }
    }
    

    3、接口返回值

    {
        "Status": true,
        "ResultValue": "",
        "StatusCode": "OK",
        "StatusMessage": "成功获取",
        "RecordCount": 0,
        "Data": {
            "AccessToken": "12_wGwcOStoi9XzRjjCzcwMgubNythtfRGqAn1ntj19I4rR_Rze5vvk5FQyd2ELUmDkFYR47lzkKdnzYzQV1Iqdj0D7tGTguqesXBTHOlLeiUmjMrbGRN_vAG26QFEilArzXBcRMCCcob2_FNr1EEZaAHARRM",
            "AccessTokenExpireTime": "2018-07-29 21:21:05"
        }
    }

    返回值中AccessTokenExpireTime表示当前的AccessToken在什么时候过期,第三方调用时可以据此设置缓存,避免每次都调用接口获取,减少接口交互次数。

  • 相关阅读:
    css文字换行问题white-space:pre-line或者white-space:pre-wrap,解决word-wrap:break-word解决不了的
    ie浏览器检测不到cookie的问题
    jQuery ajax在IE浏览器的跨域问题--jquery.xdomainrequest.min.js
    移动端 input 获取焦点后弹出带搜索、确定、前往的键盘,以及隐藏系统键盘
    三个获取浏览器URL中参数值的方法
    上传文件时文件类型限制 <input id="File1" type="file" accept=""/>
    ES6 let和const 的相同点与区别
    html页面中的title设置为空格
    vue 之 key
    nginx 之 proxy_pass详解
  • 原文地址:https://www.cnblogs.com/hnsongbiao/p/9386738.html
Copyright © 2011-2022 走看看