vue 公眾號(hào) 授權(quán) 登錄 分享

首先要有公眾號(hào)

需要在公眾號(hào)后臺(tái)的安全域名中加上現(xiàn)在的域名,這是第一步,最基礎(chǔ)的一步。

然后獲取授權(quán)、并拿到openid以及分享參數(shù)

公眾號(hào)授權(quán)是需要重定向去授權(quán)的

//重定向的時(shí)候需要注意appid是redirect_uri是需要在公眾號(hào)安全域名配置的
//配置安全域名不需要寫http://或者h(yuǎn)ttps   例:www.baidu.com
window.location. + appId + "&redirect_uri=" + redirect_uri +
    "&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";

重定向拿到code,向后端小伙伴要用戶數(shù)據(jù)。

分享給朋友、分享到朋友圈

到這一步就是需要我們前端獨(dú)立完成的部分了,所有東西都準(zhǔn)備好了。

1、安裝js-sdk
//vue項(xiàng)目中像安裝其他依賴一樣在命令行輸入就可以,也可以script引入
npm install weixin-js-sdk--save
2、js-sdk初始化

我們調(diào)用wx.config方法,來校驗(yàn)是否可以使用微信的JS-SDK。注意,jsApiList是用來配置可以注冊(cè)哪些微信功能的,這里舉例了2個(gè),一個(gè)是分享給朋友,一個(gè)是分享到朋友圈,其他功能請(qǐng)到微信JS-SDK文檔中自行查看。之后我們調(diào)用wx.ready方法,用來處理驗(yàn)證成功后的事件。
PS:(

jsApiList 是根據(jù)自己業(yè)務(wù)需求去配置的 具體的可以看公眾號(hào)文檔

分享到朋友圈跟好友注意link是你上面請(qǐng)求的那個(gè)地址,兩個(gè)地址要保持一致

)

//這個(gè)地方是需要根據(jù)當(dāng)前的url去請(qǐng)求后臺(tái)的接口拿到具體的參數(shù)

 const wxConfigItems = (list, shareTitle, shareDesc, shareImg, callback) => {
    let shareUrl = window.location.href.split("#")[0];
    let reqData = {
        shareUrl: shareUrl
    };
//使用axios跟后臺(tái)交互
//apiUrl 請(qǐng)求后臺(tái)的地址
  axios(apiUrl, "post", reqData, res => {
        wx.config({
            debug: false,
            appId: res.appId, // 必填,公眾號(hào)的唯一標(biāo)識(shí)
            timestamp: res.timestamp, // 必填,生成簽名的時(shí)間戳
            nonceStr: res.nonceStr, // 必填,生成簽名的隨機(jī)串
            signature: res.signature, // 必填,簽名
            jsApiList: list // 必填,需要使用的JS接口列表
        });
        wx.ready(function(res) {
            console.log(res);
        
          // 分享給朋友
            wx.updateTimelineShareData({
                title: shareTitle, // 分享時(shí)的標(biāo)題
                link: shareUrl, // 分享時(shí)的鏈接
                desc: shareDesc,
                imgUrl: shareImg, // 分享時(shí)的圖標(biāo)
                success: function() {
                    callback("success");
                },
                cancel: function() {}
            });
            //分享給朋友
            wx.updateAppMessageShareData({
                title: shareTitle, // 分享時(shí)的標(biāo)題
                link: shareUrl, // 分享時(shí)的鏈接
                desc: shareDesc,
                imgUrl: shareImg, // 分享時(shí)的圖標(biāo)
                success: function() {
                    callback("success");
                },
                cancel: function() {}
            });


        });
        wx.error(function(res) {
            console.log("失敗==", res);
        });
    });
};

//如果調(diào)用分享好友與朋友圈隱藏其余按鈕
 let list = ["hideMenuItems", "showMenuItems",  "updateTimelineShareData","updateAppMessageShareData"];//隱藏除分享好友與朋友圈的其余按鈕
wxConfigItems(list, shareTitle, shareDesc, shareImg)
   



//如果需要隱藏操作欄,
let list = ['hideMenuItems'];//隱藏分享按鈕那一欄
wxConfigItems(list, shareTitle, shareDesc, shareImg)

//在wx.ready執(zhí)行成功以后調(diào)用就可以隱藏
 wx.hideMenuItems({
            menuList: [
                "menuItem:share:appMessage",
                "menuItem:share:timeline",
                "menuItem:share:weiboApp",
                "menuItem:share:facebook",
                "menuItem:share:qq",
                "menuItem:favorite",
                "menuItem:share:QZone",
                "menuItem:openWithQQBrowser",
                "menuItem:openWithSafari",
                "menuItem:share:email",
                "menuItem:share:brand"
            ]
        });

//wx.ready執(zhí)行成功以后調(diào)用復(fù)制鏈接
 wx.hideOptionMenu('hideOptionMenu');

兼容問題處理

進(jìn)入對(duì)應(yīng)的頁面在此調(diào)用wx.config,多次調(diào)用可以解決ios跟安卓刷新時(shí)的問題(在ios中處理單頁需要在首次main.js先調(diào)用wx.config,)

//判斷手機(jī)型號(hào)
 const judgePhone = () => {
    let u = navigator.userAgent;
    let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
    if (isIOS) {
        return "ios";
    } else {
        return "android";
    }
};
//在main.js中判斷調(diào)用  ios首次加載調(diào)用一次  
router.beforeEach((to, from, next) => {
    if(judgePhone == 'ios'){
        if (to.path === "/") {
            // 調(diào)用獲取驗(yàn)證參數(shù)方法   
            wxConfigItems()
        }
    }
   
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容