文档章节

OpenResty获取微信公众号access_token

七木网络科技
 七木网络科技
发布于 2016/03/17 21:04
字数 372
阅读 838
收藏 2

    由于要实现公众号的各种功能首先是要获取access_token,这个access_token并不是最初填写服务器的token,而是需要appid和secret去微信服务器申请的。

    其次就是OpenResty本身要发起http请求是一件比较麻烦的事情,还好有春哥写了个lua_resty_http,让Openresty发起http请求更容易。我使用的是其中一个分支:https://github.com/pintsized/lua-resty-http

    下载之后用scp放到服务器上(直接在服务器上wget也不是不可以),我存放的路径是: /usr/local/openresty/lualib/resty,接着在nginx.conf中添加lua文件的路径:lua_package_path "/usr/local/openresty/lualib/resty/lua-resty-http/lib/?.lua;;";

    另外再添加一个location:

    location /ask_accesstoken {
            content_by_lua_file /path/to/ask_accesstoken.lua;
    }

    接下来就是干货了:

local http = require "resty.http"
local httpc = http:new()
local res, err = httpc:request_uri("https://api.weixin.qq.com/cgi-bin/token", {
        method = "GET",
        query = {
                grant_type = "client_credential",
                appid = "APPID", --填写自己的appid
                secret = "SECRET", -- 填写自己的secret
        },
        ssl_verify = false, -- 需要关闭这项才能发起https请求
        headers = {["Content-Type"] = "application/x-www-form-urlencoded" },
      })
if not res then
        ngx.say("failed to request: ", err)
        return
end
ngx.status = res.status
ngx.say(res.body)

    编辑完毕后,试验后,可能还会发生一个问题:failed to request: api.weixin.qq.com could not be resolved (110: Operation timed out)。

    这是因为需要DNS解析,此时再在nginx.conf的server中添加一句:resolver 114.114.114.114;(这个是公共的DNS解析服务器地址,我用google的8.8.8.8有时候会访问不了,得益于某堵墙 = =)。

    这样折腾后就能够获取access_token了,妥妥哒。

    

© 著作权归作者所有

七木网络科技
粉丝 292
博文 323
码字总数 126061
作品 0
深圳
程序员
私信 提问
OSC 第 105 期高手问答 —— 高性能 Web 应用开发

OSCHINA 本期高手问答( 12月23日- 12月29日)我们请来了 Vanilla 的开发者@iDev_周晶 来解答 从 Vanilla 开始做 OpenResty 高性能 Web 应用开发 方面的问题。 周晶,@iDev_周晶 ,新浪移动事业...

叶秀兰
2015/12/22
13.8K
41
每个程序员都该了解的开源世界

本文来源:MacTalk 微信号 如昨天的图文所言,李世石在经历了三败之后,迸发出巨大的能量,绝地反击,靠78「神之一手」挖,击败了 AlphaGo,捍卫了人类棋手的荣耀。 最绚烂的火花,永远产生于...

oschina
2016/03/14
8.9K
23
OpenResty x Open Talk丨深圳站

一、活动介绍 OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 ...

又拍云
2018/12/13
0
0
OpenResty学习资料收集

1、nginx-lua-module使用 https://github.com/iresty/nginx-lua-module-zh-wiki https://github.com/openresty/lua-nginx-module#readme 2、OpenResty最佳实践 https://www.gitbook.com/book......

workming
2018/06/29
0
0
打破基于OpenResty的WEB安全防护(CVE-2018-9230)

原文首发于安全客,原文链接:https://www.anquanke.com/post/id/103771 0x00 前言 OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及...

bypass
2018/06/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

REST接口

文章来源 https://zhuanlan.zhihu.com/p/28674721?group_id=886181549958119424 http://www.ruanyifeng.com/blog/2014/05/restful_api.html REST 对请求的约定 REST 用来规范应用如何在 HTTP......

Airship
昨天
1
0
Spring Cloud Config 统一配置中心

Spring Cloud Config 统一配置中心 一、统一配置中心 统一管理配置 通常,我们会使用配置文件来管理应用的配置。如一个 Spring Boot 的应用,可以将配置信息放在 application.yml 文件中,如...

非摩尔根
昨天
1
0
android ------ AAPT2 error: check logs for details解决方法

AAPT 是全称是 Android Asset Packaging Tool,它是构建 App,甚至是构建 Android 系统都必不可少的一个工具。它的作用是将所有资源文件压缩打包到Android APK 当中。我们在 Android SDK 目录...

切切歆语
昨天
2
0
今天的学习

今天学到了<select></select>标签: <label for="unittype">Select unit type: </label><select id="unittype" name="unittype" autofocus > <option value="1"> Miner </option> ......

墨冥
昨天
2
0
程序员随想-关于分享

最早的时候,文字是贵族这些上层人士才会学习的,底层人士没有资格和渠道去学习,同样用文字、图像等其他载体承载的知识大部分也只有贵族阶层才能享受的。后来有了造纸术、印刷术,成本降低,...

Lubby
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部