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 监听“分享给朋友”,按钮点击、自定义分享内容及分享结果接口       

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 4个基本不等式的公式高中_4个基本不等式的公式[通俗易懂]

    4个基本不等式的公式高中_4个基本不等式的公式[通俗易懂]高考数学-基本不等式(知识点归纳)高中数学基本不等式的巧用一.基本不等式1.(1)若a,bR,则a2b22ab(2)若a,bR,则aba2b2(当且仅当ab时取“=”)22.(1)若a,bR*,则abab2(2)若a,bR*,则ab2ab(当且仅当ab时取“=”)(3)若a,bR*,则…

  • 解决DEDECMS Call to undefined function dede_htmlspecialchars()

    解决DEDECMS Call to undefined function dede_htmlspecialchars()

  • 笛卡尔坐标系,它结合了_笛卡尔坐标系的故事

    笛卡尔坐标系,它结合了_笛卡尔坐标系的故事第一节:1D数学1.基本数学概念自然数:人类在大自然中对自己的羊或者牛进行计数,而出现自然数,所以从0到N的整数被称为自然数。负数:有时候人类在交易物品的时候会先赊着,此时就是用负数表示。分数

  • Docker(五)[通俗易懂]

    Docker(五)[通俗易懂]DockerDocker网络–link自定义网络网络连通Docker网络Docker是如何进行网络通讯的?查看本机的网卡和ip地址docker0类似与路由器ip地址一样(x.x.x.1)Dockerdocker run -d -P –name=tomcat03 tomcat:8.0查看容器ip地址docker exec -it a72d4ae634da ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noque

  • 二叉树性质及证明「建议收藏」

    二叉树性质及证明「建议收藏」二叉树性质及证明(1)规定根节点层次为0,则一棵非空二叉树的第i层上最多有2i个结点。(2)规定根节点层次为0,则深度为k的二叉树的最大结点数为2(k+1)-1。(3)具有n个结点的完全二叉树的深度k为不超过lb(n+1)-1的最大整数。(4)对于一棵非空二叉树,如果叶节点个数为n0,度为2的结点数为n2,则有n0=n2+1。(5)对于具有n个结点的完…

  • mysql 数据库表结构设计与规范[通俗易懂]

    mysql 数据库表结构设计与规范[通俗易懂]mysql数据库表结构设计与规范DDL(datadifinitionlanguage)就是数据定义语言。1.sql语句的界定符[code]–默认情况下”;”代表sql语句的结束delimiter新的界定符–修改//为界定符delimiter//2.创建数据库[code]#1.创建数据库createdatabase数据库名字[charset=uft

发表回复

您的电子邮箱地址不会被公开。

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