『壹』 微信分享sdk
公眾號h5中使用微信js-SDK(個人筆記)通過使用微信JS-SDK,網頁開發者可藉助微信高效地使用拍照、選圖、語音、位置等手機系統的能力,同時可以直接使用微信分享、掃一掃、卡券、支付等微信特有的能力,為微信用戶提供更優質的網頁體驗。
例子為在vue中使用微信JS-SDK,步驟如下:
先登錄微信公眾平台進入「公眾號設置」的「功能設置」里填寫「JS介面安全域名」。
備註:登錄後可在「開發者中心」查看對應的介面許可權。
插件方式:
引入js文件方式:
在需要調用JS介面的頁面引入如下JS文件,(支持https):
如需進一步提升服務穩定性,當上述資源不可訪問時,可改訪問:(支持https)。
掛載到Vue原型
與使用JS-SDK配置方式相同,所有需要使用開放標簽的頁面必須先注入配置信息,並通過openTagList欄位申請所需要的開放標簽,否則將無法使用(同一個url僅需調用一次)。開放標簽的申請和JS介面的申請相互獨立,因此是可以同時申請的。
配置成功之後,就可以使用相關的api了。例子為微信支付。
3.分享出去的是鏈接,不是卡片的原因及解決方案:
原因:微信開放全域名訪問後出現的限制。
解決方法:
這會導致別人通過分享卡進來的頁面不是自己配置的頁面。
解決辦法:把路由hash模式改成history模式。(讓後端把匹配不到的頁面重定向到首頁)
開發者需要配合使用微信開放平台提供的SDK進行一次性訂閱消息授權請求接入。正確接入SDK後,開發者移動應用會在終端本地拉起微信應用進行訂閱消息授權,微信用戶確認後微信將拉起開發者移動應用,並帶上授權用戶openid等信息。
使用方式:引導用戶打開;appid=wxaba38c7f163da69bscene=1000template_id=_url=http%3a%2f%2fsupport.qq.comreserved=test#wechat_redirect鏈接。
可拉起微信打開一次性消息訂閱授權頁:
使用方式:
如需添加參數,可在redirect_uri後面進行拼接,授權成功之後會帶回來。
其他問題請參考:
微信分享提示universallink校驗不通過我的是一個老項目需要升級友盟分享的sdk(實際上也是微信和qq的sdk);這邊後台給我的配置apple-app-site-association文件的鏈接,格式是()的,但是設置在備忘錄中點開universallink無效,後來後台需改了鏈接?將埠改為默認埠號,?格式是格式是(),然後備忘錄中點開universallink,生效?
然後接著采坑......
在點開分享的時候微信還是提示"由於未驗證universallink,......",這邊檢查了一下,坑的是領導在微信後台設置的賬號與我項目用的不匹配,坑爹,?
後面還有幾個坑,再次記錄一下:
1.分享面板上沒有qq,解決:友盟客服提示資源是否導入,我這邊是導入了,我這邊解決的辦法是,白名單為導入(因為我的是老項目,所以替換完sdk後就粗心的沒注意修改白名單);
2.qq分享成功以後不回跳,需要配置URLSchemes,對於qq來說,需要設置qq和tencent
3.集成微信分享sdk中的自檢函數,通過自檢方法後(自檢函數會在列印台列印7步,0....6)還是會提示"未驗證應用",那就只有一個辦法,等,我這邊等了大概3周,之前加了一個群,很多同行都遇到這個問題,有些人等的時間短,有些人等的時間長,並且有些人可能說跟成功的分享次數在總分享次數的所佔的比重有關,所以就多進行成功分享,所以多分享,多看看,沒准哪天就沒有這個提示了
微信開放SDK是什麼意思微信開放SDK是啥意思1、就是開發工具包應該是可以用這個開發微信相關軟體的。
2、微信開放SDK是採用SDK嵌入的方式,為第三方App提供一個與微信進行內容交換的通道,通過SDK的使用,第三方App可以實現分享信息給用戶的微信好友和用戶的微信朋友圈。
Unity微信登錄分享ShareSDK對接流程
官方文檔:MobTechShareSDK文檔
ShareSDK可用於多個平台登錄和分享,無需再用服務端,本文主要介紹安卓端使用ShareSDK,進行微信登錄和分享。
當時使用的是Unity2019.4.5,gradle版本4.0.0。
1、到微信開發平台申請創建應用,申請通過後獲得appId,appSecret;
2、到MobTech平台創建應用,獲得appKey,appSecret;
按照官方文檔步驟對接即可;
1、launcherTemplate.gradle文件,把需要的各平台的appId和appSecret寫在裡面,在ShareSDKDevInfo.cs裡面更改是無效的。
以微信平台為例:
2、如果微信應用正在申請,測試可使用Mob官方demo進行測試:
demo應用包名:cn.sharesdk.demo;
demokey.keystore密鑰密碼和別名密碼,均為123456;
demo應用,Mob的appKey:moba0b0c0d0,appSecret:;
demo應用,微信的appId:wx4868b35061f87885,appSecret:;
3、不需要的平台,可以在ShareSDKDevInfo.cs里的DevInfoSet中注釋掉;
1、場景中掛載ShareSDK.cs和MobSDK.cs;
2、使用前,必須要提交ShareSDK隱私協議的授權介面:
3、微信登錄,使用ShareSDK的獲取用戶信息介面即可(只會在第一次跳轉到第三方平台進行授權),返回結果包含openId,unionId,nickName等信息:
4、微信分享:
微信朋友圈JSSDK分享自定義圖片文字1、在微信公眾號添加安全域名(製作的H5頁面的主域名);
測試階段,本人是通過修改hosts文件,將對應域名解析為127.0.0.1;?然後將電腦和手機連接至同個區域網下。修改手機代理為電腦在區域網內的IP地址;這樣手機就能正常進行測試;
2、引入jssdk??script??src=''
3、配置jssdk,成功後方可使用相關功能,方式如下
wx.config({
debug:false,//開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會列印。
appId:'XX',//必填,公眾號的唯一標識
timestamp:XX,//必填,生成簽名的時間戳
nonceStr:?xx,//必填,生成簽名的隨機串
signature:xx,//必填,簽名,見附錄1??
jsApiList:['onMenuShareTimeline','onMenuShareAppMessage']//必填,需要使用的JS介面列表,所有JS介面列表見附錄2
});
第一次接觸時看到網上的文章在此對signature沒有過多的說明,這里我自己大概說一下,此參數是通過獲取公眾號的id及secret獲取access_token,然後通過access_token獲取jsapi_ticket,然後通過時間戳,隨機串,當前頁面url,通過sha1加密生成;(這里做下說明,此步驟由後台處理後返回給前端即可);
剛接觸的時候領導認為純前端可實現,這。。。確實可以實現,這里就不做過多說明了;至於要後端處理的原因大致為兩點1、公眾號id和secret在前端實現不安全?2、access_token和jsapi_ticket每日有請求次數的限制,過期時間兩小時,所以需要後台在伺服器緩存,每兩小時獲取一次;
4、wx.config配置正確即可通過wx.ready來調用相應功能
wx.ready(function(){
wx.onMenuShareTimeline({??//分享朋友圈
title:'X',//分享標題
link:window.location.href,//分享鏈接
imgUrl:url,//分享圖標
success:function(){
//用戶確認分享後執行的回調函數
console.log('分享成功了喲喲喲')
},
cancel:function(){
//用戶取消分享後執行的回調函數
}
});
wx.onMenuShareAppMessage({?//?好友分享
title:'',//分享標題
desc:'',//分享描述
link:window.location.href,//分享鏈接
imgUrl:'',//分享圖標
success:function(){
//用戶確認分享後執行的回調函數
},
cancel:function(){
//用戶取消分享後執行的回調函數
}
});
});
總結:其實對於前端要處理的很少,只要從後台獲取signature簽名,調用方法即可實現;具體可看官方文檔;首次接觸的小夥伴不要被嚇到,就是如此簡單;
自定義微信分享鏈接(使用JS-SDK)+實現預覽pdf可參考:微信JS-SDK說明文檔
此時可能出現白名單錯誤(忘截圖了),需要在微信公眾號中設置錯誤中的IP
注意:access_token和ticket都需要緩存
4.獲取簽名signature
將以上內容以鍵值對形式拼接,類似如下
本地引入sha1演算法(需網上查找)
將上述拼接的字元串以參數的形式傳遞到sha1中得到signature
signature=sha1(拼接完的字元串)
驗證signature是否正確
將appId,nonceStr,timestamp和signature返回給前端
官網上是這樣描述的:
這時候調用updateAppMessageShareData,updateTimelineShareData的時候就可以生效了,具體原理不清楚。。
注意:imgUrl配置有嚴格的要求
尺寸120x120,大小不超過10K,不支持GIF格式。必須採用https協議(最好寫完整url),不支持base64。由於我使用的是vue,在webpack打包時圖片小於10k的是會自動打包成base64導致無法正常顯示圖片,因此在webpack.base.config.js中修改默認配置
由於在網頁中直接查看pdf的路徑是無法在微信中查看(安卓)和分享(ios),因此使用pdf插件進行優化---pdf.js。其原理是繪製成canvas,最終在真機上放大時可能出現模糊的問題。
創建之後控制台會報錯出現跨域問題,因為pdf.js不支持跨域訪問。此時可以將錯誤跨域信息在上一步你引入的文件中查找,然後將其判斷語句注釋掉即可解決這個問題。最後會發現pdf出現在這個容器中(忘截圖了),也實現了微信中預覽和分享的功能。
『貳』 ios開發 友盟分享到微信好友和分享到朋友圈的區別
分享到好友就是分享到你的好友列表裡的那些好友啊。就像你跟好友聊天一樣,分享之後,你的好友就能收到你分享的內容。
分享到朋友圈就是所有人都能看到啊。
『叄』 分享到微信朋友圈,然後點進去之後進入的是友盟的頁面,怎麼修改
到API申請裡面,修改微信API的回調地址 。我起先是這樣的,nil的話他說默認友盟,能否改他的類方法把URL去掉。
『肆』 ios友盟微信分享怎樣生成appid
1. 首先在微信開發者頁面申請一個APPID。一定要微信審核通過才能使用!
2. 在後台【應用管理-設置-分享設置】中將申請到的微信ID錄入到【分享微信AppID】。
3. 保存後系統會編譯您的應用,編譯後升級您的應用即可。
具體操作流程:
一、申請微信ID:
1.進入微信開放平台
2. 點擊頁面左上端進行注冊或者登陸。
3. 點擊頁面左下端【移動應用開發】,進入應用接入的頁面詳情。
4. 填寫應用名稱和應用的基本信息。
其中的所需上傳的圖標的水印圖片可以從app製作者的管理後台中獲取具體路徑【應用管理】->【應用推廣】。
5. 完善資料。
6. 簽名和包名。微信android簽名:簽名直接復制上面的簽名代碼即可,一定要記住,復制時不要有多餘空格哦。包名類似:com.jh.APPXXX.news,由系統生成,XXX是一串數字,具體包名可以在【應用管理-設置-分享設置】頁面獲得。填寫完畢後,點擊【提交】就完成申請了。微信平台會有1-7個工作日的審核周期,通過後即可將appid綁定到平台中。
二、如何綁定微信APPID將按照上面申請的微信appid添加到【應用管理-設置-分享設置】頁面的分享微信AppID欄位,添加後保存即可。
注意:
申請APPID時,還需要上傳應用圖標,請提前准備,否則不能提交審核,這些圖標在【應用管理-設置-分享設置】頁面提供下載。
1)水印圖標,水印圖標出現在微信聊天界面消息氣泡底部,
28*28 png格式 灰度圖(沒有彩色的圖)2)高清圖標,高清圖標出現在聊天界面附件欄中,
108*108 png格式
『伍』 友盟微信朋友圈分享為什麼沒有標題
在需要被微信分享的頁面中,加入下面這一段JS代碼就可以進行控制了。
var imgUrl = 'http://xxx/share_ico.png'; // 分享後展示的一張圖片
var lineLink = 'http://xxx'; // 點擊分享後跳轉的頁面地址
var descContent = "xx!"; // 分享後的描述信息
var shareTitle = 'xx'; // 分享後的標題
var appid = ''; // 應用id,如果有可以填,沒有就留空
function shareFriend() {
WeixinJSBridge.invoke('sendAppMessage',{
"appid": appid,
"img_url": imgUrl,
"img_width": "200",
"img_height": "200",
"link": lineLink,
"desc": descContent,
"title": shareTitle
}, function(res) {
//_report('send_msg', res.err_msg); // 這是回調函數,必須注釋掉
})
}
function shareTimeline() {
WeixinJSBridge.invoke('shareTimeline',{
"img_url": imgUrl,
"img_width": "200",
"img_height": "200",
"link": lineLink,
"desc": descContent,
"title": shareTitle
}, function(res) {
//_report('timeline', res.err_msg); // 這是回調函數,必須注釋掉
});
}
function shareWeibo() {
WeixinJSBridge.invoke('shareWeibo',{
"content": descContent,
"url": lineLink,
}, function(res) {
//_report('weibo', res.err_msg);
});
}
// 當微信內置瀏覽器完成內部初始化後會觸發WeixinJSBridgeReady事件。
document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {
// 發送給好友
WeixinJSBridge.on('menu:share:appmessage', function(argv){
shareFriend();
});
// 分享到朋友圈
WeixinJSBridge.on('menu:share:timeline', function(argv){
shareTimeline();
});
// 分享到微博
WeixinJSBridge.on('menu:share:weibo', function(argv){
shareWeibo();
});
}, false);