二次分享是指在微信、QQ内打开由APP分享出的页面再次分享出去,二次分享的基本流程以下:html
从APP分享到第三方,须要APP注册第三方平台账号并进行相应配置ios
为获取用户信息,分享的连接通常都是受权连接,用户点击进入时会要求用户进行受权api
设置相应的分享参数,用户在二次分享时须要用到服务器
微信平台作得比较好,有很详细并一致的文档介绍,可是QQ就不好,开放平台的文档根本没有提到二次分享的设置,经过Google能找到一些零散的资料。这里介绍一下两个平台分别如何实现。微信
1.微信受权连接示例:https://open.weixin.qq.com/co...'+ WECHATAPPID +'&redirect_uri=your_url?response_type=code&scope=snsapi_userinfo&state=123#wechat_redirectapp
2.打开连接,重定向,示例连接改变为your_url?code=F7687B50B46F87207D4F4F21A021837F&state=test,在连接参数中获取code的值,去服务器请求得到openid值url
3.wechat二次分享,详细见微信sdk.net
1.QQ受权连接示例:https://graph.qq.com/oauth2.0...
注意:redirect_uri在拼接连接参数时须要把?、&改为转义字符code
2.打开连接,重定向,示例连接改变为your_url?code=F7687B50B46F87207D4F4F21A021837F&state=test,与微信分享同理htm
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