All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ecfront.ez.framework.service.oauth2.WeixinMPProcessor.scala Maven / Gradle / Ivy

package com.ecfront.ez.framework.service.oauth2

import com.ecfront.common.{JsonHelper, Resp}
import com.ecfront.ez.framework.service.auth.model.EZ_Account
import com.ecfront.ez.framework.service.rpc.http.HttpClientProcessor

object WeixinMPProcessor extends AppProcessor {

  override def fetchAccount(accessToken: AccessToken): Resp[EZ_Account] = {
    try {
      val resp = HttpClientProcessor.get(
        s"""
           |https://api.weixin.qq.com/sns/userinfo?access_token=${accessToken.access_token}&openid=${accessToken.openid}&lang=zh_CN
       """.stripMargin)
      val result = JsonHelper.toObject[Map[String, Any]](resp)
      val account = EZ_Account()
      account.name = result("nickname").asInstanceOf[String]
      account.image = result("headimgurl").asInstanceOf[String]
      account.oauth = Map(
        appName -> result("openid").asInstanceOf[String]
      )
      Resp.success(account)
    } catch {
      case e: Throwable =>
        logger.warn("Fetch account error." + e.getMessage, e)
        Resp.serverError("Fetch account error." + e.getMessage)
    }
  }

  override protected def packageFetchCodeParameters(): String = {
    super.packageFetchCodeParameters() + "#wechat_redirect"
  }

  override protected val fetchCodeBaseUrl: String = "https://open.weixin.qq.com/connect/oauth2/authorize"
  override protected val fetchAccessTokenBaseUrl: String = "https://api.weixin.qq.com/sns/oauth2/access_token"

  override protected val appName: String = "weixin_mp"

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy