公司需求:微博,qq和微信三方登錄
微信只支持微信內(nèi)置瀏覽器
qq授權(quán)登錄pc端和h5端是一樣的。需要先申請qq互聯(lián),
入門參考資料:https://blog.csdn.net/m0_46846526/article/details/119243300
1.在index.html中引入
<script type="text/javascript"src="https://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" charset="utf-8"></script>
2.使用
QC.Login.showPopup({
appId: "1********5",
redirectURI: "http://wx.xxxxx.com/login", //登錄成功后會自動跳往該地址
});
3.獲取回調(diào)地址的內(nèi)容,得到openId较沪,使用openId請求后臺接口
回調(diào)的格式類似:
mounted() {
this.code = this.$route.query.code
this.state = this.$route.query.state
// 微博
if (this.code && !this.state) {
this.weibo_login_redirect()
} else if (this.$route.hash.indexOf("#access_token") != -1) {
this.qq_login_redirect()
} else if (this.code && !this.state) {
this.weixin_login_redirect(obj)
}
}
qq_login_redirect() {
let that = this;
// 檢查是否登錄
if (QC.Login.check()) {
QC.Login.getMe(function (openId, accessToken) {
if (openId) {
that.openId = openId;
that.qq_login_redirect_confim()
}
});
} else {
console.log("未登錄!");
}
},
// 調(diào)用后臺接口,判斷是否已綁定失仁,如果已經(jīng)綁定尸曼,那么返回用戶登錄信息
async qq_login_redirect_confim() {
let obj = {
openID: this.openId,
thirdType: "qq",
};
var url = 'front/thirdparty/login'
Util.showLoading()
var data = await Util.post(url, obj, 1)
if (data.status == '200') {
// ifReg需要綁定賬號
if (data.data.ifReg) {
var query = {
openId: this.openId,
thirdType: 'qq'
}
this.$router.push({ path: '/thirdBind', query })
} else {
// 返回用戶的信息data.data
this.publicData(data.data);
}
}
},