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)


相关推荐

  • 2017年java培训机构排名[通俗易懂]

    2017年java培训机构排名[通俗易懂]俗话说360行,行行转IT,在如今这个互联网横行的时代,做一个Java开发工程师可以算得上是集智慧,钞票为一身的光鲜职业了,尤其是在北上广这一线城市,年薪30w的黄金小鲜肉随处可见,这也是许多高校毕业生,甚至是其它行业工作数年后都望尘莫及的。因为梦想高薪,跨专业,转行的人比比皆是,也就免不了和一些Java培训机构打交道,而如今这世道教育机构也不见得都那么有“良心”就拿北京来说吧,大大小小的Java培训机构不下5000家,这里边有正规做良心教育的,也有浑水摸鱼什么都不是的,有面向全国招生的,也有面向全国“诈骗

  • 巡检,不再要你磨破机房门槛

    巡检,不再要你磨破机房门槛

  • Eureka集群配置

    Eureka集群配置eureka作为注册中心,生产环境必须多节点部署,保证其高可用性。现以两台服务器来完成集群部署。服务器A:172.16.21.34服务器B:172.16.21.35方式一:使用ip形式完成。服务器A:172.16.21.34server:port:7777spring:application:name:register#指定eureka客户端的登录账户security:user:…

  • Laravel Model的 fillable (白名单) 和 guarded (黑名单)属性

    Laravel Model的 fillable (白名单) 和 guarded (黑名单)属性Laravel Model的 fillable (白名单) 和 guarded (黑名单)属性

  • iOS 自我检測

    iOS 自我检測

  • Gradle教程「建议收藏」

    Gradle教程「建议收藏」1.简介在本课程中,我们将学习Gradle,它是一个构建工具和一个依赖管理系统,与Maven和Ant非常相似,并且专门用于构建基于Java的项目。与Maven和Ant构建系统不同,Gradle不使用XML。它实际上是基于Groovy构建在DSL中的。与基于XML的其他构建系统相比,基于Groovy的Gradle脚本的最大优势是可以使构建脚本更小,更简洁。就像Maven构建文件…

发表回复

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

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