4

二次分享的问题

二次分享是指在微信、QQ内打开由APP分享出的页面再次分享出去,二次分享的基本流程如下:

  1. 从APP分享到第三方,需要APP注册第三方平台帐号并进行相应配置

  2. 为获取用户信息,分享的链接一般都是授权链接,用户点击进入时会要求用户进行授权

  3. 设置相应的分享参数,用户在二次分享时需要用到

微信平台做得比较好,有很详细并一致的文档介绍,但是QQ就很差,开放平台的文档根本没有提到二次分享的设置,通过Google能找到一些零散的资料。这里介绍一下两个平台分别如何实现。

微信

1.微信授权链接示例:https://open.weixin.qq.com/co...'+ WECHATAPPID +'&redirect_uri=your_url?response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect

2.打开链接,重定向,示例链接改变为your_url?code=F7687B50B46F87207D4F4F21A021837F&state=test,在链接参数中获取code的值,去服务器请求获得openid值

3.wechat二次分享,详细见微信sdk

qq

1.QQ授权链接示例:https://graph.qq.com/oauth2.0...
注意:redirect_uri在拼接链接参数时需要把?、&改成转义字符

2.打开链接,重定向,示例链接改变为your_url?code=F7687B50B46F87207D4F4F21A021837F&state=test,与微信分享同理

3.QQ二次分享(两种方式)

方式一

引用 http://qzonestyle.gtimg.cn/qz...,调用setShareInfo

setShareInfo({
     title: shareTitle,
     summary: shareSummary,
     pic:  'pic_url',
     url: window.location.href + '&tencentShare=1'
});

方式二

设置meta

<meta itemprop="name" content="分享标题"/>
<meta itemprop="image" content="http://img.xmiles.cn/fortune/icon.png" />
<meta name="description" itemprop="description" content="分享描述" />

遇到问题并解决如下:

问题一:由于手机QQ限制,分享URl与页面必须求同个域名,否则设置不生效
但这里二次分享的链接也需要授权,但由于域名不同,所以用了另一种方式解决:设置分享url为当前链接,带上自定义参数,根据参数值在页面加载时重新打开授权链接

问题二:qq这种jdk设置分享在安卓端定制生效,在ios定制无效,这里采用折中的方式使用<meta>定制。由于<meta>设置分享信息无法改变链接,qq默认拿原本链接进行分享,在code过期时,请求服务器会导致报错,因此这里采用 在页面请求失败时再去重新打开授权链接

QQ分享还跟版本相关,设置标题内容上面两种方式都可能不生效,由于没去追究哪个版本问题,因此暂时不处理这个问题

以上

参考资料:
http://m.blog.csdn.net/articl...
http://caibaojian.com/mqq-sha...
http://open.mobile.qq.com/api...
http://qun.qq.com/jsapi.html


小麦
46 声望3 粉丝