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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Zuul网关集群_zuul网关

    Zuul网关集群_zuul网关1,Zuul网关集群原理![在这里插入图片描述](https://img-blog.csdnimg.cn/20201019212045203.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4ODQ1Mjcx,size_16,color_FFFFFF,t_70#pic_center)…

    2022年8月15日
    6
  • 深入FFM原理与实践(美团点评技术)

    深入FFM原理与实践(美团点评技术)from: https://tech.meituan.com/deep-understanding-of-ffm-principles-and-practices.htmlFM和FFM模型是最近几年提出的模型,凭借其在数据量比较大并且特征稀疏的情况下,仍然能够得到优秀的性能和效果的特性,屡次在各大公司举办的CTR预估比赛中获得不错的战绩。美团点评技术团队在搭建DSP的过程中,探索并使用了FM

    2022年5月5日
    71
  • js拼接字符串练习(一)

    js拼接字符串练习(一)动态生成表格,通过用户输入的背景颜色、边框宽度、表格宽度、对齐方式、行高、内容来动态生成表格:&lt;!DOCTYPEhtml&gt;&lt;html&gt; &lt;head&gt; &lt;metacharset="UTF-8"&gt; &lt;title&gt;&lt;/title&gt; &lt;/head&gt; &lt;body&amp

    2025年7月10日
    6
  • mongodb删除某个字段_mongodb 反向查找

    mongodb删除某个字段_mongodb 反向查找转自:http://blog.csdn.net/xb12369/article/details/46451385介绍:MongoDB是数据库,MongoVUE是图形化界面,类似mysql和navicate,oracle和plsql目前我知道的:Mongo的特点,Json格式,C++底层,区分大小写模糊匹配:sql中like%%在mongo中是:newRegExp(name:’.*123.*…

    2022年8月21日
    8
  • Linux进程管理与调度-之-目录导航【转】

    Linux进程管理与调度-之-目录导航【转】

    2022年3月8日
    39
  • 程序员去外包公司有前途吗_程序员去外包是不是就废了

    程序员去外包公司有前途吗_程序员去外包是不是就废了虽然大部分人都抵制外包,但是很多人,尤其是萌新,并不清楚外包的主要缺点。我这里简单说一下。程序员去外包公司有前途吗?不能说去了外包公司就完全没有前途了,主要看个人能力,外包的工作内容,大多十分碎片化,甚至是机械化。因为如果这个工作内容真的很完整、成块儿,那正式工就做掉了。正式工做掉的理由有两个:完整工作内容有利于他,去构建业务认知。完整内容拆分出来外包,需要进行进行大量的沟通与团队协作,不利于整体效率。那么有没有办法避免碎片化呢?答案是有的。一方面可以表现出自身能力,获取正式团队

    2022年9月30日
    7

发表回复

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

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