微信JS-SDK安卓版发送给朋友为什么不能ios 封装自定义sdk简介?

微信JS-SDK 配置(扫一扫 / 自定义分享简介..)
根据官方的开发文档可以把步骤分为以下3步:
1.引入官方JS文件 (建议去官方文档引入最新的版本 : http://mp./wiki/7/aaa137b55fb2e48dd613f.html#.E6.AD.A5.E9.AA.A4.E4.BA.8C.EF.BC.9A.E5.BC.95.E5.85.A5JS.E6.96.87.E4.BB.B6)
2.准备参数(最好服务器端准备),根据官方文档要求准备一下参数:
1 &script&
2 wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识,必须先开通微信商户(微信提供)
timestamp: , // 必填,生成签名的时间戳 (自己准备)
nonceStr: '', // 必填,生成签名的随机串 (自己准备)
signature: '',// 必填,签名,见附录1 (自己准备,但需要通过微信提供的 token / ticket 等参数才能请求到)
jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见官方文档的附录2
10 &/script&
服务器端的参数准备如下:(实际代码根据实际情况调整)
请事先准备好 appid 和 secret (请自行至微信公众平台申请)
$WeChatToken = file_get_contents("https://api./cgi-bin/token?grant_type=client_credential&appid=".$Appid."&secret=".$Secret);
$arr_WeChatToken = json_decode($WeChatToken,true);
$JSAPI_TICKET = file_get_contents("https://api./cgi-bin/ticket/getticket?access_token=".$arr_WeChatToken['access_token']."&type=jsapi");
$arr_JSAPI_TICKET = json_decode($JSAPI_TICKET,true);
$Ticket = $arr_JSAPI_TICKET['ticket'];
##-- 2.生成随机签名 noncestr
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
for ($i = 0; $i & 16; $i++)
$NonceStr .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
$TimeStamp = $NowTimeS
$Url = '请自行填写当前文件完整路径';
$SigNature = sha1('jsapi_ticket='.$Ticket.'&noncestr='.$NonceStr.'&timestamp='.$TimeStamp.'&url='.$Url);
3.调用接口 (本实例为 自定义 微信分享时的插图 / 标题 / 摘要)
1 &script&
2 wx.ready(function(){
测试时调用,如果调用成功则会弹出提示
wx.checkJsApi({
jsApiList: [
'onMenuShareTimeline',
'onMenuShareAppMessage'
wx.onMenuShareTimeline({
title: 'JSSDK调用测试', // 分享标题
link: '/EditPosts.x?opt=1', // 分享链接
imgUrl: '/EditPosts.aspx?opt=1', // 分享图标
success: function (res) {
// 用户确认分享后执行的回调函数
cancel: function (res) {
// 用户取消分享后执行的回调函数
wx.onMenuShareAppMessage({
title: 'JSSDK调用测试', // 分享标题
desc: '描述', // 分享描述
link: '/EditPosts.aspx?opt=1', // 分享链接
imgUrl: '/EditPosts.aspx?opt=1', // 分享图标
type: '', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
success: function () {
// 用户确认分享后执行的回调函数
cancel: function () {
// 用户取消分享后执行的回调函数
37 &/script&
注意 : 所有参数都必须保证 服务器端与 客户端所使用的是一致的!否则无法调用!
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'Android实现微信分享及注意事项
一、获取帮助文档并相关资料首先打开微信开放平台:https://open./ 如果没有注册,请先注册并上传开发者资料等待审核。资源中心----移动应用开发----分享与收藏功能----开发手册开发手册链接地址:https://open./zh_CN/htmledition/res/dev/document/sdk/android/index.html资源中心----移动应用开发----接入指南---Android接入指南(下面我们主要参考这个)二、接入微信分享功能1、申请AppID如何现在没有AppID可以先下载官方的Demo使用Demo中的AppID即可。SDK和Demo下载地址:https://open./cgi-bin/frame?t=resource/res_main_tmpl&verify=1&lang=zh_CN&target=res/app_download_android开发工具包(SDK)使用微信分享、登录、收藏、支付等功能需要的库以及文件。点击下载 Android开发工具包使用微信语音识别接口、语音合成接口。点击下载 语音SDK+Demo+开发文档使用微信图像识别接口。点击下载 图像SDK+Demo+开发文档使用微信卡券功能接口。点击下载 卡券SDK+开发文档范例代码包含了一个完整的范例工程。该范例的使用可以参阅Android平台上手指南:HelloWeixin@Android。点击下载签名生成工具用于获取安装到手机的第三方应用签名的apk包。点击下载 签名生成工具下载完成后我们可以参考一下Demo来集成。2、下载微信开发工具包(在上面已经下载)3、开始搭建开发环境然后将libammsdk.jar文件拷贝到工程lib目录下。注意:如果使用的是Demo中的AppID则包名一定要先和Demo的包名一致,否则分享会出错。4、新建一个Activity在里面放置一个按钮vcD48cD48cHJlIGNsYXNzPQ=="brush:">package net.sourceforge.
import android.app.A
import android.os.B
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import com.example.weixinsharedemo.share.WeixinShareM
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.share_weibo);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
WeixinShareManager wsm = WeixinShareManager.getInstance(MainActivity.this);
wsm.shareByWeixin(wsm.new ShareContentPic(R.drawable.ic_launcher),
WeixinShareManager.WEIXIN_SHARE_TYPE_TALK);
4、开始创建我们的分享逻辑类并实现需要的分享功能package com.example.weixinsharedemo.
import android.content.C
import android.graphics.B
import android.graphics.BitmapF
import android.widget.T
import com.example.weixinsharedemo.util.WeixiShareU
import com.tencent.mm.sdk.modelmsg.SendMessageToWX;
import com.tencent.mm.sdk.modelmsg.WXImageO
import com.tencent.mm.sdk.modelmsg.WXMediaM
import com.tencent.mm.sdk.modelmsg.WXTextO
import com.tencent.mm.sdk.modelmsg.WXWebpageO
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.WXAPIF
* 实现微信分享功能的核心类
* @author Administrator
public class WeixinShareManager{
private static final int THUMB_SIZE = 150;
public static final int WEIXIN_SHARE_WAY_TEXT = 1;
public static final int WEIXIN_SHARE_WAY_PIC = 2;
public static final int WEIXIN_SHARE_WAY_WEBPAGE = 3;
public static final int WEIXIN_SHARE_TYPE_TALK = SendMessageToWX.Req.WXSceneS
public static final int WEIXIN_SHARE_TYPE_FRENDS = SendMessageToWX.Req.WXSceneT
private static WeixinShareM
private static String weixinAppId;
private IWXAPI wxA
private WeixinShareManager(Context context){
this.context =
//初始化数据
weixinAppId = WeixiShareUtil.getWeixinAppId(context);
//初始化微信分享代码
if(weixinAppId != null){
initWeixinShare(context);
* 获取WeixinShareManager实例
* 非线程安全,请在UI线程中操作
public static WeixinShareManager getInstance(Context context){
if(instance == null){
instance = new WeixinShareManager(context);
private void initWeixinShare(Context context){
wxApi = WXAPIFactory.createWXAPI(context, weixinAppId, true);
wxApi.registerApp(weixinAppId);
* 通过微信分享
* @param shareWay 分享的方式(文本、图片、链接)
* @param shareType 分享的类型(朋友圈,会话)
public void shareByWeixin(ShareContent shareContent, int shareType){
switch (shareContent.getShareWay()) {
case WEIXIN_SHARE_WAY_TEXT:
shareText(shareType, shareContent);
case WEIXIN_SHARE_WAY_PIC:
sharePicture(shareType, shareContent);
case WEIXIN_SHARE_WAY_WEBPAGE:
shareWebPage(shareType, shareContent);
private abstract class ShareContent{
protected abstract int getShareWay();
protected abstract String getContent();
protected abstract String getTitle();
protected abstract String getURL();
protected abstract int getPicResource();
* 设置分享文字的内容
* @author Administrator
public class ShareContentText extends ShareContent{
* 构造分享文字类
* @param text 分享的文字内容
public ShareContentText(String content){
this.content =
protected String getContent() {
protected String getTitle() {
protected String getURL() {
protected int getPicResource() {
return -1;
protected int getShareWay() {
return WEIXIN_SHARE_WAY_TEXT;
* 设置分享图片的内容
* @author Administrator
public class ShareContentPic extends ShareContent{
private int picR
public ShareContentPic(int picResource){
this.picResource = picR
protected String getContent() {
protected String getTitle() {
protected String getURL() {
protected int getPicResource() {
return picR
protected int getShareWay() {
return WEIXIN_SHARE_WAY_PIC;
* 设置分享链接的内容
* @author Administrator
public class ShareContentWebpage extends ShareContent{
private int picR
public ShareContentWebpage(String title, String content,
String url, int picResource){
this.title =
this.content =
this.url =
this.picResource = picR
protected String getContent() {
protected String getTitle() {
protected String getURL() {
protected int getPicResource() {
return picR
protected int getShareWay() {
return WEIXIN_SHARE_WAY_WEBPAGE;
* 分享文字
private void shareText(int shareType, ShareContent shareContent) {
String text = shareContent.getContent();
//初始化一个WXTextObject对象
WXTextObject textObj = new WXTextObject();
textObj.text =
//用WXTextObject对象初始化一个WXMediaMessage对象
WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = textO
msg.description =
//构造一个Req
SendMessageToWX.Req req = new SendMessageToWX.Req();
//transaction字段用于唯一标识一个请求
req.transaction = buildTransaction("textshare");
req.message =
//发送的目标场景, 可以选择发送到会话 WXSceneSession 或者朋友圈 WXSceneTimeline。 默认发送到会话。
req.scene = shareT
wxApi.sendReq(req);
* 分享图片
private void sharePicture(int shareType, ShareContent shareContent) {
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), shareContent.getPicResource());
WXImageObject imgObj = new WXImageObject(bmp);
WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = imgO
Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, THUMB_SIZE, THUMB_SIZE, true);
bmp.recycle();
msg.thumbData = WeixiShareUtil.bmpToByteArray(thumbBmp, true);
//设置缩略图
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("imgshareappdata");
req.message =
req.scene = shareT
wxApi.sendReq(req);
* 分享链接
private void shareWebPage(int shareType, ShareContent shareContent) {
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = shareContent.getURL();
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = shareContent.getTitle();
msg.description = shareContent.getContent();
Bitmap thumb = BitmapFactory.decodeResource(context.getResources(), shareContent.getPicResource());
if(thumb == null){
Toast.makeText(context, "图片不能为空", Toast.LENGTH_SHORT).show();
msg.thumbData = WeixiShareUtil.bmpToByteArray(thumb, true);
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("webpage");
req.message =
req.scene = shareT
wxApi.sendReq(req);
private String buildTransaction(final String type) {
return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
上面只是实现了文字、图片、链接的分享功能,如需分享视频、音频可以添加。5、实现分享结果反馈要实现分享结果的反馈,微信已经将结果的处理封装到了WXEntryActivity中(jar包中),所以我们要继承该类获取反馈结果。在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity(例如应用程序的包名为net.sourceforge.simcpux,则新添加的类如下图所示)package net.sourceforge.simcpux.
import com.example.weixinsharedemo.share.WXCallbackA
public class CallBackActivity extends WXCallbackActivity{
public void weixinResp(int respCode) {
System.out.println("respCode = " + respCode);
}注意:记得去Mainfest文件中注册Activity
三、运行代码使用Demo中AppId的朋友在这里要注意,请设置一下签名文件(在上面下载的SDK中有)如下:点击Browser进行选择,运行即可。如果有什么问题请在下面留言,也可以加博客旁边的QQ群()进行详细交流。另外可以关注一下我的阳光小栈(www.)。
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'15:16 提问
微信JS-SDK在公众号中自定义分享内容
在公众号中实现自定义分享内容时,签名,验证都通过,但点击分享到qq,微博,朋友圈后没有任何反应,详见下图
按赞数排序
我也是遇到了同样的问题,请问刚怎么办?
407关注|150收录
696关注|426收录
660关注|1142收录
其他相似问题关键字:微信公众平台 JSSDK 发送给朋友 分享到朋友圈&onMenuShareTimeline&onMenuShareAppMessage&作者:方倍工作室&原文:&
在这篇微信公众平台开发教程中,我们将介绍如何在网页中实现发送给朋友和分享到朋友圈时内容参数自定义的功能。
本文分为以下二个部分:
生成JS-SDK权限验证签名
实现发送给朋友和分享到朋友圈时内容参数自定义
《微信公众平台开发最佳实践》一书中10.5节&发送给朋友与分享到朋友圈&因微信接口变更已经失效,以使用新接口的本教程为准!
一、微信JS-SDK
1. 获得Access Token
access token的获得方法在前面有介绍,详情见&
2. 获取jsapi_ticket
生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。
参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket),接口地址如下
https://api./cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
成功返回如下JSON:
"errcode":0,
"errmsg":"ok",
"ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",
"expires_in":7200
获得jsapi_ticket之后,就可以生成JS-SDK权限验证的签名了。
3. 签名算法实现
签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2&)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。
即signature=sha1(string1)。 示例:
noncestr=Wm3WZYTPz0wzccnW
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg
timestamp=
url=http://mp.?params=value
步骤1. 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2&)拼接成字符串string1:
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=&url=http://mp.?params=value
步骤2. 对string1进行sha1签名,得到signature:
0f9de62fce790f9a083d5c99e95740ceb90c27ed
完整代码如下
class JSSDK {
private $appId;
private $appSecret;
public function __construct($appId, $appSecret) {
$this-&appId = $appId;
$this-&appSecret = $appSecret;
public function getSignPackage() {
$jsapiTicket = $this-&getJsApiTicket();
// 注意 URL 一定要动态获取,不能 hardcode.
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$timestamp = time();
$nonceStr = $this-&createNonceStr();
// 这里参数的顺序要按照 key 值 ASCII 码升序排序
$string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
$signature = sha1($string);
$signPackage = array(
=& $this-&appId,
"nonceStr"
=& $nonceStr,
"timestamp" =& $timestamp,
"signature" =& $signature,
"rawString" =& $string
return $signPackage;
private function createNonceStr($length = 16) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$str = "";
for ($i = 0; $i & $length; $i++) {
$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
return $str;
private function getJsApiTicket() {
// jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例
$data = json_decode(file_get_contents("jsapi_ticket.json"));
if ($data-&expire_time & time()) {
$accessToken = $this-&getAccessToken();
// 如果是企业号用以下 URL 获取 ticket
// $url = "https://qyapi./cgi-bin/get_jsapi_ticket?access_token=$accessToken";
$url = "https://api./cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
$res = json_decode($this-&httpGet($url));
$ticket = $res-&
if ($ticket) {
$data-&expire_time = time() + 7000;
$data-&jsapi_ticket = $ticket;
$fp = fopen("jsapi_ticket.json", "w");
fwrite($fp, json_encode($data));
fclose($fp);
$ticket = $data-&jsapi_
return $ticket;
private function getAccessToken() {
// access_token 应该全局存储与更新,以下代码以写入到文件中做示例
$data = json_decode(file_get_contents("access_token.json"));
if ($data-&expire_time & time()) {
// 如果是企业号用以下URL获取access_token
// $url = "https://qyapi./cgi-bin/gettoken?corpid=$this-&appId&corpsecret=$this-&appSecret";
$url = "https://api./cgi-bin/token?grant_type=client_credential&appid=$this-&appId&secret=$this-&appSecret";
$res = json_decode($this-&httpGet($url));
$access_token = $res-&access_
if ($access_token) {
$data-&expire_time = time() + 7000;
$data-&access_token = $access_token;
$fp = fopen("access_token.json", "w");
fwrite($fp, json_encode($data));
fclose($fp);
$access_token = $data-&access_
return $access_token;
private function httpGet($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);
return $res;
二、发送给朋友和分享到朋友圈参数自定义
1. 绑定域名
先登录微信公众平台进入&公众号设置&的&功能设置&里填写&JS接口安全域名&。
2. 获取签名包
require_once "jssdk.php";
$jssdk = new JSSDK("yourAppID", "yourAppSecret");
$signPackage = $jssdk-&GetSignPackage();
3. 引入JS文件
在需要调用JS接口的页面引入如下JS文件,(支持https):
&script src="http://res./open/js/jweixin-1.0.0.js"&&/script&
4.通过config接口注入权限验证配置
所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用。
wx.config({
debug: false,
appId: '&?php echo $signPackage["appId"];?&',
timestamp: &?php echo $signPackage["timestamp"];?&,
nonceStr: '&?php echo $signPackage["nonceStr"];?&',
signature: '&?php echo $signPackage["signature"];?&',
jsApiList: [
// 所有要调用的 API 都要加到这个列表中
'checkJsApi',
'openLocation',
'getLocation',
'onMenuShareTimeline',
'onMenuShareAppMessage'
5. 通过ready接口处理成功验证
地理位置需要在页面加载时就调用,需要把相关接口放在ready函数中调用来确保正确执行
wx.ready(function () {
5.1 通过checkJsApi判断当前客户端版本是否支持分享参数自定义
wx.checkJsApi({
jsApiList: [
'getLocation',
'onMenuShareTimeline',
'onMenuShareAppMessage'
success: function (res) {
alert(JSON.stringify(res));
5.2 使用数组定义分享内容参数
$news = array("Title" =&"微信公众平台开发实践", "Description"=&"本书共分10章,案例程序采用广泛流行的PHP、MySQL、XML、CSS、JavaScript、HTML5等程序语言及数据库实现。", "PicUrl" =&'/i/404/305.jpg', "Url" =&'/txw1958/p/weixin-development-best-practice.html');
5.3. 实现JS分享功能
wx.onMenuShareAppMessage({
title: '&?php echo $news['Title'];?&',
desc: '&?php echo $news['Description'];?&',
link: '&?php echo $news['Url'];?&',
imgUrl: '&?php echo $news['PicUrl'];?&',
trigger: function (res) {
// 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回
// alert('用户点击发送给朋友');
success: function (res) {
// alert('已分享');
cancel: function (res) {
// alert('已取消');
fail: function (res) {
// alert(JSON.stringify(res));
wx.onMenuShareTimeline({
title: '&?php echo $news['Title'];?&',
link: '&?php echo $news['Url'];?&',
imgUrl: '&?php echo $news['PicUrl'];?&',
trigger: function (res) {
// 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回
// alert('用户点击分享到朋友圈');
success: function (res) {
// alert('已分享');
cancel: function (res) {
// alert('已取消');
fail: function (res) {
// alert(JSON.stringify(res));
三、实现效果
弹出请求获取页面
分享时的插件显示方倍工作室的&微信公众平台开发最佳实践
阅读(...) 评论()

我要回帖

更多关于 微信sdk分享朋友圈 的文章

 

随机推荐