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

龙海网站建设wordpress可以自定义模型吗

龙海网站建设,wordpress可以自定义模型吗,深圳品牌网站制作多少钱,做网站语言知乎钉钉的的官方开发文档中只给出了java实现三方登录的#xff0c;我们准备用go语言来实现 实现网页方式登录应用#xff08;登录第三方网站#xff09; - 钉钉开放平台 首先就是按照文档进行操作#xff0c;备注好网站的信息 获得应用凭证#xff0c;我们后面会用到 之后…钉钉的的官方开发文档中只给出了java实现三方登录的我们准备用go语言来实现 实现网页方式登录应用登录第三方网站 - 钉钉开放平台 首先就是按照文档进行操作备注好网站的信息 获得应用凭证我们后面会用到 之后配置回调域名用于后续前端页面重定向使用 开通用户的个人信息权限 代码如下 控制层 // RedirectToDingTalkLogin // Description: 将用户重定向到钉钉登录授权页 // param c *gin.Context func RedirectToDingTalkLogin(c *gin.Context) {appId : **这里写你的Client ID**redirectUri : url.QueryEscape(**这里写你的回调地址**) // 钉钉回调地址state : random-state //防止CSRF可选url : fmt.Sprintf(https://oapi.dingtalk.com/connect/qrconnect?appid%sresponse_typecodescopesnsapi_loginstate%sredirect_uri%s,appId, state, redirectUri)c.Redirect(http.StatusFound, url) }// GetDingTalkToken // Description: 处理钉钉回调信息 // param c *gin.Context func GetDingTalkToken(c *gin.Context) {authCode : c.DefaultQuery(authCode, )if authCode {response.Failed(c, http.StatusBadRequest, response.NewAppErr(globals.StatusBadRequest, nil, nil))return}accessToken, err : logics.GetAccessToken(authCode)if err ! nil {response.Failed(c, http.StatusInternalServerError, response.NewAppErr(globals.StatusInternalServerError, err, nil))return}//获取用户信息userInfo, err : logics.GetDingTalkUserInfo(accessToken)if err ! nil {response.Failed(c, http.StatusInternalServerError, response.NewAppErr(globals.StatusInternalServerError, err, nil))return}logics.ThirdPartLogin(c, userInfo, dingTalk) } 业务层代码 var dingTalkConf requests.Conf{ClientId: 你的client ID,ClientSecret: 你的ClientSecret,RedirectUrl: 你的回调地址, }// GetAccessToken // Description: 获取钉钉通行token // param authCode string // return string // return error func GetAccessToken(authCode string) (string, error) {api : https://api.dingtalk.com/v1.0/oauth2/userAccessTokenpayload : url.Values{}payload.Set(clientId, dingTalkConf.ClientId)payload.Set(clientSecret, dingTalkConf.ClientSecret)payload.Set(code, authCode)payload.Set(grantType, authorization_code)resp, err : http.PostForm(api, payload)if err ! nil {return , fmt.Errorf(post token error: %v, err)}defer resp.Body.Close()body, _ : ioutil.ReadAll(resp.Body)if resp.StatusCode ! http.StatusOK {return , fmt.Errorf(failed to get token: %s, string(body))}var tokenResp requests.TokenResponseif err json.Unmarshal(body, tokenResp); err ! nil {return , fmt.Errorf(parse token json error: %v, err)}return tokenResp.AccessToken, nil }// GetDingTalkUserInfo // Description: 通过token获取用户信息 // param accessToken string // return *models.User // return error func GetDingTalkUserInfo(accessToken string) (map[string]interface{}, error) {api : https://api.dingtalk.com/v1.0/contact/users/mereq, _ : http.NewRequest(GET, api, nil)req.Header.Set(x-acs-dingtalk-access-token, accessToken)client : http.Client{}resp, err : client.Do(req)if err ! nil {return nil, fmt.Errorf(get user info error: %v, err)}defer resp.Body.Close()body, _ : ioutil.ReadAll(resp.Body)if resp.StatusCode ! http.StatusOK {return nil, fmt.Errorf(failed to get user info: %s, string(body))}var userInfo map[string]interface{}if err json.Unmarshal(body, userInfo); err ! nil {return nil, fmt.Errorf(parse user json error: %v, err)}return userInfo, nil }// ThirdPartLogin // Description: 根据第三方信息登录并生成token // param c *gin.Context // param userInfo map[string]interface{} // param provider string func ThirdPartLogin(c *gin.Context, userInfo map[string]interface{}, provider string) {db : globals.DB//判断用户是否扫码登录过userId, err : repositories.CheckHistoryLogin(db, userInfo[id].(string), provider)if err ! nil {response.Failed(c, http.StatusInternalServerError, response.NewAppErr(globals.StatusInternalServerError, err, nil))}if userId 0 {//判断用户是否注册过user : repositories.QueryUserByEmail(db, userInfo[email].(string))if user nil {//没注册过直接跳转至注册return}//将三方登录记录插入记录表err repositories.InsertOtherLogin(db, userInfo[id].(string), provider, user.ID)if err ! nil {response.Failed(c, http.StatusInternalServerError, response.NewAppErr(globals.StatusInternalServerError, err, nil))return}}// 生成tokenid : userIdtok, err : token.GenerateToken(id, userInfo[email].(string))if err ! nil {globals.Log.Errorf(err.Error())response.Failed(c, http.StatusInternalServerError, response.NewAppErr(globals.StatusInternalServerError, err, nil))return}response.Success(c, http.StatusOK, response.NewAppData(globals.StatusOK, response.DataSuccess, gin.H{Token: tok, userinfo: userInfo})) }
http://www.pierceye.com/news/916715/

相关文章:

  • 怎么做优惠券网站asp.net mvc 5网站开发之美
  • 网站底部浮动电话广告福建住房和城乡建设部网站
  • 建站之星破解版wordpress 置顶排序
  • c2c网站代表和网址涟源市建设局网站
  • 哪个网站有免费的模板免费网上商城系统
  • 一个网站的建设需要什么东西前十强排名家装公司
  • 广州网站建设报价表石家庄搜索排名提升
  • 网站备案步骤企业网站手机版模板免费下载
  • 郑州高端品牌网站建设镇江网站营销推广
  • 网站开发简单的框架南昌手机网站
  • 网站分析与优化百度新闻源网站有哪些
  • 直播网站开发秀色上海综合新闻
  • 电子商务网站建设与管理课后题答案企业网站推广哪家好
  • 网站被挂黑链怎么删除石家庄企业网站建设
  • 网站模板怎么连接域名可视化网页设计在线
  • 美术馆网站建设要求开发软件多少钱一个月
  • 直播网站开发核心技术wordpress访问次数插件
  • wap网站 劣势微信小程序怎么写
  • 商业网站开发与设计网站seo是什么意思
  • 内蒙古住房和城乡建设网站做网站的人怎么上传内容的
  • 视频网站视频预览怎么做的美丽说网站案例分析
  • 宝安多屏网站建设公司好吗网站启用cdn加速
  • 上海网站制作方法网站页面设计报价
  • 介绍自己做的网站的论文网站模块建设中
  • 诸城手机网站建设微官网怎么制作
  • 做网站界面的软件网站开发售后服务
  • 织梦可以做英文网站吗成交型网站建设公司
  • 长沙招聘网站制作广告设计公司需要用专线网吗
  • 一级做爰A视频免费网站国内疫苗接种率
  • 绍兴网站公司网站制作163邮箱登录页面