python 朋友圈接口_微信开发Python微信– 分享接口(分享到朋友圈、朋友、空间)…

python 朋友圈接口_微信开发Python微信– 分享接口(分享到朋友圈、朋友、空间)…本文将带你了解微信开发Python微信–分享接口(分享到朋友圈、朋友、空间),希望本文对大家学微信有所帮助。生成JS-SDK权限验证的签名获取signature(签名)首先要获得1、#获得jsapi_ticket2、#获取当前页面的url#获取当前页面的url  url=””{}://{}{}””.format(self.request.protocol,self.request.host,s…

大家好,又见面了,我是你们的朋友全栈君。

本文将带你了解微信开发Python微信– 分享接口(分享到朋友圈、朋友、空间),希望本文对大家学微信有所帮助。

a52d8f08bce506ad39462a97f62527a6.png

生成JS-SDK权限验证的签名

获取signature(签名)首先要获得

1、#获得jsapi_ticket

2、#获取当前页面的url

#获取当前页面的url  url=””{}://{}{}””.format(self.request.protocol,self.request.host,self.request.uri)

3、#获取timestamp(时间戳)

#获取timestamp(时间戳)

timestamp = int(time.time())

4、#获取noncestr(随机字符串)

#获取noncestr(随机字符串)

nonceStr = self.createNonceStr()(见下函数)

5、# 这里参数的顺序要按照 key 值 ASCII 码升序排序

string =   “”jsapi_ticket={}&noncestr={}×tamp={}&url={}””.format(jsapiTicket,nonceStr,timestamp,url)

6、#得到signature(用sha1加密)

signature = hashlib.sha1(string).hexdigest();

1、获得jsapi_ticket要先获取access_token(不再细说)

然后

def getJsApiTicket(self):

#获得jsapi_ticket

#获得jsapi_ticket之后,就可以生成JS-SDK权限验证的签名了

import urllib2

# jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例

#cookie(‘ticket’,null);

#获取access_token

accessToken = self.accesstokens()

# 如果是企业号用以下 URL 获取 ticket

# $url =   “”https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken””;

#获取jsapi_ticket

url = “”https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={}&type=jsapi””.format(accessToken)

req = urllib2.Request(url)

res_data = urllib2.urlopen(req)

res = res_data.read()

res=json_decode(res)

return str(res[‘ticket’])

4、#获取noncestr(随机字符串)

def createNonceStr(self,length = 16):      #获取noncestr(随机字符串)    import   random    chars =   “”abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789″”    str = “”””;    for i in range(0,16):        str += chars[random.randint(0,   len(chars)-1):random.randint(0, len(chars)-1)+1]    # for ($i = 0; $i < $length; $i++) {    #     $str .= substr($chars, mt_rand(0, strlen($chars) – 1), 1);    # }      return str;

后台总代码整理为:

def index(self):      “”””””      知识中心    :return:    “”””””    id = self.get_argument(‘id’,”)    getSignPackage=self.getSignPackage()      self.assign(‘getSignPackage’,getSignPackage)      self.display(‘knowledge/index.html’)

def getSignPackage(self) :    import   hashlib    #获得jsapi_ticket    jsapiTicket = self.getJsApiTicket()    # 注意 URL 一定要动态获取,不能 hardcode.    # protocol = (!empty($_SERVER[‘HTTPS’])   && $_SERVER[‘HTTPS’] !== ‘off’ || $_SERVER[‘SERVER_PORT’] == 443) ?   “”https://”” : “”http://””;    # $url =   “”$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]””;    #获取当前页面的url      url=””{}://{}{}””.format(self.request.protocol,self.request.host,self.request.uri)    #获取timestamp(时间戳)    timestamp = int(time.time())    #获取noncestr(随机字符串)    nonceStr = self.createNonceStr()    # 这里参数的顺序要按照 key 值 ASCII 码升序排序    string =   “”jsapi_ticket={}&noncestr={}×tamp={}&url={}””.format(jsapiTicket,nonceStr,timestamp,url)    #得到signature    signature =   hashlib.sha1(string).hexdigest();      wxinfo = self.getwx()      signPackage = {          “”appId””:wxinfo[‘appid’],          “”nonceStr””:nonceStr,          “”timestamp””:timestamp,        “”url””:url,          “”signature””:signature,          “”rawString””:string    }      return signPackage;def createNonceStr(self,length = 16):    #获取noncestr(随机字符串)    import random    chars =   “”abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789″”    str = “”””;    for i in range(0,16):        str += chars[random.randint(0,   len(chars)-1):random.randint(0, len(chars)-1)+1]    # for ($i = 0; $i < $length; $i++)   {    #     $str .= substr($chars, mt_rand(0, strlen($chars) – 1), 1);    # }      return str;def getJsApiTicket(self):      #获得jsapi_ticket      #获得jsapi_ticket之后,就可以生成JS-SDK权限验证的签名了    import urllib2    # jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例    #cookie(‘ticket’,null);    #获取access_token    accessToken = self.accesstokens()    # 如果是企业号用以下 URL 获取 ticket    # $url =   “”https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken””;    #获取jsapi_ticket    url =   “”https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={}&type=jsapi””.format(accessToken)    req = urllib2.Request(url)    res_data = urllib2.urlopen(req)    res = res_data.read()    res=json_decode(res)    return str(res[‘ticket’])

前台总代码整理:

//通过config接口注入权限验证配置

wx.config({

debug: false,

appId:   ‘${getSignPackage[“”appId””]}’,

timestamp:’${getSignPackage[“”timestamp””]}’,

nonceStr:   ‘${getSignPackage[“”nonceStr””]}’,

signature:   ‘${getSignPackage[“”signature””]}’,

jsApiList: [

‘onMenuShareAppMessage’,

‘onMenuShareTimeline’,

‘onMenuShareQQ’,

‘onMenuShareWeibo’

// 所有要调用的 API   都要加到这个列表中

]

});

wx.ready(function ()   {

// 1 判断当前版本是否支持指定 JS   接口,支持批量判断

wx.checkJsApi({

jsApiList:   [

‘onMenuShareAppMessage’

],

success: function   (res) {

//alert(JSON.stringify(res));

}

});

//获取“分享给朋友”按钮点击状态及自定义分享内容接口

wx.onMenuShareAppMessage({

title:   ‘${replypt_list[“”title””]}’,

desc:   ‘${replypt_list[“”title””]}’,

link:   ‘${getSignPackage[“”url””]}’,

imgUrl:   ‘${handler.settings[“”PHOTO_URL””]}${replypt_list[“”cover””]}’,

trigger: function   (res) {

//   不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回

},

success: function   (res) {

$.ajax({

url:   ‘/shop/knowledge/addIntager’,

data: {   name: “”${replypt_list[‘id’]}””},

type:   ‘post’,

cache:false,

success:   function(data){

},

error:   function(xhr, type){

alert(‘Ajax error!’)

}

})

},

cancel: function   (res) {

},

fail: function   (res) {

}

});

//获取“分享到朋友圈”按钮点击状态及自定义分享内容接口

wx.onMenuShareTimeline({

title:   ‘${replypt_list[“”title””]}’,

desc:   ‘${replypt_list[“”title””]}’,

link:   ‘${getSignPackage[“”url””]}’,

imgUrl:   ‘${handler.settings[“”PHOTO_URL””]}${replypt_list[“”cover””]}’,

trigger: function   (res) {

//   不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回

},

success: function   (res) {

$.ajax({

url:   ‘/shop/knowledge/addIntager’,

data: {   name: “”${replypt_list[‘id’]}””},

type:   ‘post’,

cache:false,

success:   function(data){

alert(str(‘aa’))

},

error:   function(xhr, type){

alert(‘Ajax error!’)

}

})

},

cancel: function   (res) {

},

fail: function   (res) {

}

});

//获取“分享到QQ”按钮点击状态及自定义分享内容接口

wx.onMenuShareQQ({

title:   ‘${replypt_list[“”title””]}’,

desc:   ‘${replypt_list[“”title””]}’,

link:   ‘${getSignPackage[“”url””]}’,

imgUrl:   ‘${handler.settings[“”PHOTO_URL””]}${replypt_list[“”cover””]}’,

trigger: function   (res) {

},

complete:   function (res) {

},

success: function   (res) {

$.ajax({

url:   ‘/shop/knowledge/addIntager’,

data: {   name: “”${replypt_list[‘id’]}””},

type:   ‘post’,

cache:false,

success:   function(data){

},

error:   function(xhr, type){

alert(‘Ajax error!’)

}

})

},

cancel: function   (res) {

},

fail: function   (res) {

}

});

wx.onMenuShareWeibo({

title:   ‘${replypt_list[“”title””]}’,

desc:   ‘${replypt_list[“”title””]}’,

link:   ‘${getSignPackage[“”url””]}’,

imgUrl:   ‘${handler.settings[“”PHOTO_URL””]}${replypt_list[“”cover””]}’,

trigger: function   (res) {

},

complete:   function (res) {

},

success: function   (res) {

$.ajax({

url:   ‘/shop/knowledge/addIntager’,

data: {   name: “”${replypt_list[‘id’]}””},

type:   ‘post’,

cache:false,

success:   function(data){

},

error:   function(xhr, type){                                  alert(‘Ajax error!’)                            }                        })                    },                    cancel: function (res)   {                    },                    fail: function (res)   {                    }                });            });        // 2. 分享接口        // 2.1 监听“分享给朋友”,按钮点击、自定义分享内容及分享结果接口       

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之微信频道!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133584.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • anycast隧道_IPv6中Anycast通信模型若干问题的分析和研究.pdf

    anycast隧道_IPv6中Anycast通信模型若干问题的分析和研究.pdf您所在位置:网站首页>海量文档&nbsp>&nbsp计算机&nbsp>&nbsp通信/网络IPv6中Anycast通信模型若干问题的分析和研究.pdf109页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。下载提示1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受…

    2022年5月23日
    34
  • 实现一个简单的发布订阅模式_vue订阅者发布者实现

    实现一个简单的发布订阅模式_vue订阅者发布者实现JavaScript 发布/订阅模式

    2022年4月20日
    57
  • 云存储性能_内存256g和128g的区别

    云存储性能_内存256g和128g的区别与以磁盘存储为主的普通数据库相比,内存数据库的数据访问速度可以高出几个数量级,能大幅提高运算性能,更适合高并发、低延时的业务场景。不过,当前大部分内存数据库仍然采用SQL模型,而SQL缺乏一些必要的数据类型和运算,不能充分利用内存的特征实现某些高性能算法。仅仅是把外存的数据和运算简单地搬进内存,固然也能获得比外存好得多的性能,但还没有充分利用内存特征,也就不能获得极致的性能。下面我们来看看,有哪些适合内存特征的算法和存储机制,可以进一步提升内存数据库计算速度。我们知道,内存可以通过地址(指针)来访问

    2025年8月14日
    3
  • JAVA项目集锦 Java项目视频20套

    JAVA项目集锦 Java项目视频20套783 127    课程介绍学技术的目的就是为了应用,尤其是的编程开发技术,三天不练手生是大实话同时对于JAVA初学者来说,急需的就是能够参与项目开发,让自己迅速的成长起来,掌握JAVA的核心技术——————-课程目录——————-第01项目:OA办公自动化项目(四套)第02项目:CRM客户关系管理项目(两套)第03项目:宅急送项目第04项目:…

    2022年9月1日
    5
  • 来客在线客服系统源码 支持一键安装

    来客在线客服系统源码 支持一键安装简介:来客客服源码/带完整文字教程/一键安装好友分享的,状态比流通版本还是要好很多。不支持前端商户注册,这个大家应该也都用过了,有喜欢的,自己拿去吧,东西如下。网盘下载地址:http://kekewl.org/D11LdBKXP7L0图片:…

    2022年7月19日
    41
  • 新手小白学JAVA IO流 File 字节流 字符流

    新手小白学JAVA IO流 File 字节流 字符流IO简介1流Stream在学习IO流之前,我们首先需要学习的概念就是Stream流为了方便理解,我们可以把数据的读写操作抽象成数据在”管道”中流动,但需注意:1.流只能单方向流动2.输入流用来读取→in3.输出流用来写出→out4.数据只能从头到尾顺序的读写一次所以以程序的角度来思考,In/out相对于程序而言的输入(读取)/输出(写出)的过程.2IO流的继承结构在java中,根据处理的数据单位不同,可以把流分为字节流和字符流字节流:针对二进制文件字符流:针对

    2022年4月29日
    102

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号