当前位置: 首页 > wzjs >正文

网站广告的图片怎么做wordpress在线翻译

网站广告的图片怎么做,wordpress在线翻译,如何制作活动宣传网页,建网站是什么专业类别学习链接 30分钟完成微信登录接口对接和原理掌握&#xff0c;支持个人 yungouos文档 - 个人开发者&#xff0c;可对接微信/支付宝 gitee代码地址 效果 后端 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://ma…

学习链接

30分钟完成微信登录接口对接和原理掌握,支持个人

yungouos文档 - 个人开发者,可对接微信/支付宝

gitee代码地址

效果

在这里插入图片描述

后端

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.8.RELEASE</version></parent><modelVersion>4.0.0</modelVersion><groupId>com.zzhua</groupId><artifactId>demo-web-backend</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>com.yungouos.pay</groupId><artifactId>yungouos-pay-sdk</artifactId><version>2.0.34</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.68</version></dependency></dependencies></project>

YunGouController

@Slf4j
@RestController
@RequestMapping("yungou")
public class YunGouController {@Autowiredprivate YunGouProperties yunGouProperties;// 获取授权Url链接@GetMapping("/wx/getAuthorizationUrl")public Result<String> getAuthorizationUrl() {log.info("getAuthorizationUrl---->");JSONObject params = new JSONObject();String url = WxApi.getWxOauthUrl(yunGouProperties.getMchId(),yunGouProperties.getCallbackUrl(),"open-url",params,yunGouProperties.getMchKey());return Result.ok(url);}// 根据code获取用户信息@GetMapping("/wx/loginByCode")public Result<Map<String, Object>> loginByCode(@RequestParam("code") String code) {WxOauthInfo wxOauthInfo = WxApi.getWxOauthInfo(yunGouProperties.getMchId(),code,yunGouProperties.getMchKey());String jwtToken = genToken(wxOauthInfo);Map<String, Object> data = MapBuilder.newHashMap().put("wxOauthInfo", wxOauthInfo).put("token", jwtToken).build();return Result.ok(data);}private String genToken(WxOauthInfo wxOauthInfo) {log.info("wxOauthInfo: {}", wxOauthInfo);// simply backreturn wxOauthInfo.getOpenId();}// 获取内嵌二维码信息@GetMapping("/wx/innerQrCodeInfo")public Result<Object> qrCodeInfo() {JSONObject params = new JSONObject();WxWebLoginBiz loginBiz = WxApi.getWebLogin(yunGouProperties.getMchId(),yunGouProperties.getCallbackUrl(),params,yunGouProperties.getMchKey());loginBiz.getState();return Result.ok(loginBiz);}}/*window.parent.postMessage({ type: 'wechatLoginSuccess' })window.addEventListener('message', function (event) {console.log('收到消息', event);if (event.data.type == 'wechatLoginSuccess') {console.log('wechatLoginSuccesswechatLoginSuccesswechatLoginSuccess');location.href = '/home'}});<!DOCTYPE html>
<html><head><script type="text/javascript">// 检测当前页面是否在iframe中if (window.self !== window.top) {// 如果在iframe中,则让父窗口跳转到首页(或目标页面)window.top.location.href = '/home'; // 替换为你的实际目标URL} else {// 如果直接访问回调页面,也进行跳转window.location.href = '/home';}</script></head><body><!-- 可添加加载提示 -->登录成功,正在跳转...</body>
</html>*/

前端

路由

import { createRouter,createWebHistory} from "vue-router";// 路由信息
const routes = [{path: '/',redirect: '/login'},{path: '/login',name: 'login',component: () => import('@/views/Login.vue')},{path: '/login/wx',name: 'wxLogin',component: () => import('@/views/WxLogin.vue')},{path: '/home',name: 'home',component: () => import('@/views/Home.vue')}
]const router = createRouter({history: createWebHistory(),routes
});router.beforeEach((to,from,next)=>{next()
})router.afterEach((to,from,next)=>{
})// 导出路由
export default router;

Login.vue

<template><div style="width: 600px; margin: auto; text-align: center;"><h2>Login</h2><div style="display: flex"><div style="width:0;flex-grow: 1;"><button @click="login">微信登录(跳转微信扫码)</button></div><div  style="width:0;flex-grow: 1;min-width: 300px;"><button @click="loginInner">微信登录(内嵌微信扫码)</button><div id="login_container"></div></div></div></div>
</template><script setup>
import { getAuthorizationUrl, innerQrCodeInfo } from '@/api/login.js'
import { useRouter } from 'vue-router'
const router = useRouter()
const login = async () => {let authorizationUrl = await getAuthorizationUrl()location.href = authorizationUrl
}const loginInner = async () => {/*{"code": 0,"msg": "成功","data": {"appId": "wx7a04e843a99eb4c1","scope": "snsapi_login","state": "9773F9350C8E4A1B8A49584C1B251366","redirect_uri": "https://api.wx.yungouos.com/callback/wxmp/oauth"}}*/let qrCodeInfo = await innerQrCodeInfo()var obj = new WxLogin({self_redirect: true,id: "login_container",appid: qrCodeInfo.appId,scope: qrCodeInfo.scope,redirect_uri: qrCodeInfo.redirect_uri,state: qrCodeInfo.state,style: "",href: ""});
}
</script><style scoped>button {border: none;border-radius: 6px;height: 40px;background-color: #1da5ff;color: aliceblue;cursor: pointer;
}
</style>

WxLogin.vue

<template><div class="loader" v-show="showLoadingCircle"><div class="loader-inner"><div class="loader-line-wrap"><div class="loader-line"></div></div><div class="loader-line-wrap"><div class="loader-line"></div></div><div class="loader-line-wrap"><div class="loader-line"></div></div><div class="loader-line-wrap"><div class="loader-line"></div></div><div class="loader-line-wrap"><div class="loader-line"></div></div></div></div>
</template><script setup>
import { ref, onMounted } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import { loginByCode } from '@/api/login'const route = useRoute()
const router = useRouter()const showLoadingCircle = ref(false)onMounted(() => {console.log(window == window.parent, window.self == window.top);// 是否是内嵌iframeif (window.self !== window.top) {console.log('在iframe');// 如果在iframe中,则让父窗口跳转到首页(或目标页面)window.top.location.href = '/login/wx?code=' + route.query.code; // 替换为你的实际目标URL} else {console.log('不在iframe');showLoadingCircle.value = trueloginByCode({code: route.query.code}).then(res=>{localStorage.setItem('userInfo', JSON.stringify(res))router.push('/home')})}
})</script><style scoped>
.loader {background: #fff;background: radial-gradient(#fff, #fff);bottom: 0;left: 0;overflow: hidden;position: fixed;right: 0;top: 0;z-index: 99999;
}.loader-inner {bottom: 0;height: 60px;left: 0;margin: auto;position: absolute;right: 0;top: 0;width: 100px;
}.loader-line-wrap {animation:spin 2000ms cubic-bezier(.175, .885, .32, 1.275) infinite;box-sizing: border-box;height: 50px;left: 0;overflow: hidden;position: absolute;top: 0;transform-origin: 50% 100%;width: 100px;
}.loader-line {border: 4px solid transparent;border-radius: 100%;box-sizing: border-box;height: 100px;left: 0;margin: 0 auto;position: absolute;right: 0;top: 0;width: 100px;
}.loader-line-wrap:nth-child(1) {animation-delay: -50ms;
}.loader-line-wrap:nth-child(2) {animation-delay: -100ms;
}.loader-line-wrap:nth-child(3) {animation-delay: -150ms;
}.loader-line-wrap:nth-child(4) {animation-delay: -200ms;
}.loader-line-wrap:nth-child(5) {animation-delay: -250ms;
}.loader-line-wrap:nth-child(1) .loader-line {border-color: hsl(0, 80%, 60%);height: 90px;width: 90px;top: 7px;
}.loader-line-wrap:nth-child(2) .loader-line {border-color: hsl(60, 80%, 60%);height: 76px;width: 76px;top: 14px;
}.loader-line-wrap:nth-child(3) .loader-line {border-color: hsl(120, 80%, 60%);height: 62px;width: 62px;top: 21px;
}.loader-line-wrap:nth-child(4) .loader-line {border-color: hsl(180, 80%, 60%);height: 48px;width: 48px;top: 28px;
}.loader-line-wrap:nth-child(5) .loader-line {border-color: hsl(240, 80%, 60%);height: 34px;width: 34px;top: 35px;
}@keyframes spin {0%,15% {transform: rotate(0);}100% {transform: rotate(360deg);}
}
</style>

Home.vue

<template><div style="width: 500px; margin: auto; text-align: center;"><h2>主页</h2><div><img :src="userInfo.wxOauthInfo.wxUserInfo.headimgurl" style="border-radius: 50%;width: 80px;"><h3>姓名: <span style="color: orange;">{{ userInfo.wxOauthInfo.wxUserInfo.nickname }}</span></h3></div><button @click="logout">注销</button></div>
</template><script setup>
import { ref } from 'vue'
import { useRouter } from 'vue-router'const router = useRouter()
const userInfo = ref(JSON.parse(localStorage.getItem('userInfo')))
function logout() {localStorage.removeItem("userInfo")router.push('/login')
}
</script><style lang="scss"></style>

文章转载自:

http://OvtF4PyT.wtnwf.cn
http://qrAeI26P.wtnwf.cn
http://dFXQakef.wtnwf.cn
http://trXebi2V.wtnwf.cn
http://ujXOTgxG.wtnwf.cn
http://refQcEE5.wtnwf.cn
http://kIaxanfN.wtnwf.cn
http://kjnaDFfq.wtnwf.cn
http://4eknTE6D.wtnwf.cn
http://bWWFfJof.wtnwf.cn
http://zOC1G6uf.wtnwf.cn
http://2g0teViv.wtnwf.cn
http://KSWiFrYf.wtnwf.cn
http://15FEXYjd.wtnwf.cn
http://Hpla8URK.wtnwf.cn
http://Str03XYv.wtnwf.cn
http://GyxBRVTh.wtnwf.cn
http://NFtMe3uu.wtnwf.cn
http://vrhEyCp6.wtnwf.cn
http://RzlknX5N.wtnwf.cn
http://ZJQiYgOK.wtnwf.cn
http://U5ym14JY.wtnwf.cn
http://EAjRG6Yu.wtnwf.cn
http://u0GsYcUf.wtnwf.cn
http://dlPqLAxY.wtnwf.cn
http://xtBbGkwm.wtnwf.cn
http://h9W8W0Ft.wtnwf.cn
http://DnQvbcE3.wtnwf.cn
http://y43t6zx7.wtnwf.cn
http://SkKgDepF.wtnwf.cn
http://www.dtcms.com/wzjs/747378.html

相关文章:

  • 网站制作公司起名建设银行衡阳市分行网站
  • 网站负责人 备案导视设计案例
  • 南京免费发布信息网站免费制作音乐的软件app
  • 汕头做网站北京双诚建设监理公司网站
  • 重庆承越网站建设地址帮别人制作wordpress赚钱吗
  • 重庆建设技术发展中心网站泉港区规划建设局网站
  • php做的网站后台wordpress editor.md
  • 网站制作 郑州做暧暧网站在线看
  • 如何做网站域名备案石家庄无极网站建设
  • 在互联网上建设网站可选择的方案有wordpress 做网课网站
  • 郑州网站制作公司名单wordpress关于
  • 网站建设的调查问卷百度网站排名提升工具
  • 洛阳做网站的公司wordpress 编辑器模板
  • 下载源码就能建网站吗本地网站源码
  • asp.net mysql 网站开发如何建立免费的网站
  • 洮南网站建设哪家专业利用模板如何制作网站
  • 求个没封的w站2022动漫设计工作室网站宣传片制作
  • 网站公司名称大全南昌大型网站建设公司
  • 广州金融网站设计wordpress 主题学习
  • 利用vs做网站网站建设课程
  • 不懂编程如何做网站网站建设的人员预期
  • 做网站 需要 域名 空间网站演示程序
  • 房子装修网站医学分类手机网站模版
  • 个性化网站模板昭通商城网站建设
  • 百度安装app下载免费湖南网站seo营销
  • 国际网站建设做网站的图片大全
  • asp 网站运行在线商城系统平台
  • 做网站注意哪些室内设计学校全国排名
  • 电子及商务网站建设报告桂林北站改造
  • 海外购物网站哪个最好黄冈网站推广在线