二次分享的问题
二次分享是指在微信、QQ内打开由APP分享出的页面再次分享出去,二次分享的基本流程如下:
从APP分享到第三方,需要APP注册第三方平台帐号并进行相应配置
为获取用户信息,分享的链接一般都是授权链接,用户点击进入时会要求用户进行授权
设置相应的分享参数,用户在二次分享时需要用到
微信平台做得比较好,有很详细并一致的文档介绍,但是QQ就很差,开放平台的文档根本没有提到二次分享的设置,通过Google能找到一些零散的资料。这里介绍一下两个平台分别如何实现。
微信
1.微信授权链接示例:'+ 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
1.QQ授权链接示例:
注意:redirect_uri在拼接链接参数时需要把?、&改成转义字符2.打开链接,重定向,示例链接改变为your_url?code=F7687B50B46F87207D4F4F21A021837F&state=test,与微信分享同理
3.QQ二次分享(两种方式)
方式一
引用 ,调用setShareInfo
setShareInfo({ title: shareTitle, summary: shareSummary, pic: 'pic_url', url: window.location.href + '&tencentShare=1'});
方式二
设置meta
遇到问题并解决如下:
问题一:由于手机QQ限制,分享URl与页面必须求同个域名,否则设置不生效
但这里二次分享的链接也需要授权,但由于域名不同,所以用了另一种方式解决:设置分享url为当前链接,带上自定义参数,根据参数值在页面加载时重新打开授权链接问题二:qq这种jdk设置分享在安卓端定制生效,在ios定制无效,这里采用折中的方式使用<meta>定制。由于<meta>设置分享信息无法改变链接,qq默认拿原本链接进行分享,在code过期时,请求服务器会导致报错,因此这里采用 在页面请求失败时再去重新打开授权链接
QQ分享还跟版本相关,设置标题内容上面两种方式都可能不生效,由于没去追究哪个版本问题,因此暂时不处理这个问题
以上
参考资料: