yml文件
package com.umh.medicalbookingplatform.api.service
import com.umh.medicalbookingplatform.api.model.*
import com.umh.medicalbookingplatform.core.model.user.User
import com.umh.medicalbookingplatform.core.model.user.UserRepository
import com.umh.medicalbookingplatform.core.model.user.UserToken
import com.umh.medicalbookingplatform.core.security.model.AuthenticationRequest
import com.umh.medicalbookingplatform.core.service.TokenService
import com.umh.medicalbookingplatform.core.service.UserTokenService
import io.swagger.v3.oas.annotations.Operation
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.data.repository.findByIdOrNull
import org.springframework.stereotype.Service
import java.util.*
import com.google.firebase.FirebaseApp
import com.google.auth.oauth2.GoogleCredentials
import com.google.firebase.FirebaseOptions
import com.google.firebase.auth.FirebaseAuth
import com.umh.medicalbookingplatform.core.properties.ApplicationProperties
import org.springframework.security.crypto.codec.Utf8
import java.io.*
@Service
class ApiMemberService {
@Autowired
private lateinit var apiGPInvokeService: ApiGPInvokeService
private val logger = LoggerFactory.getLogger(this.javaClass)
@Autowired
private lateinit var tokenUtils: TokenService
@Autowired
private lateinit var userTokenService: UserTokenService
@Autowired
private lateinit var apiMemberService: ApiMemberService
@Autowired
private lateinit var userRepository: UserRepository
@Autowired
private lateinit var appProperties: ApplicationProperties
@Operation(summary = "第三方登录接口", description = "第三方登录接口")
fun socialMediaLogin(): String {
//这里的需求是要把yml里的base64编码拿过来进行解码
//base64转string
val decoder = base64.getDecoder()
val decoded = decoder.decode(appProperties.firebaseAdminSdk)
val decodedStr = String(decoded, Charsets.UTF_8)
//val jsonObject = JSONObject.parseObject(decodedStr)
//val serviceAccount = FileInputStream("C:/Users/sendi/Desktop/serviceAccountKey.json")
//往文本里面写入字符串内容,firebaseAccountKey.json为名字
val file = File("firebaseAccountKey.json")
file.writeText(decodedStr)
println(file)
//测试
val test = FileOutputStream("C:/Users/sendi/Desktop/test.json")
test.write(decodedStr.toByteArray())
test.close()
val serviceAccount = FileInputStream(file)
val options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
//.setCredentials(GoogleCredentials.getApplicationDefault())
//.setDatabaseUrl("https://.firebaseio.com/")
.build()
FirebaseApp.initializeApp(options)
val idToken = "eyJhbGciOiJSUzI1NiIsImtpZCI6ImYwNTM4MmFlMTgxYWJlNjFiOTYwYjA1Yzk3ZmE0MDljNDdhNDQ0ZTciLCJ0eXAiOiJKV1QifQ.eyJuYW1lIjoi5Y2i5pm66ZSLIiwicGljdHVyZSI6Imh0dHBzOi8vbGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS9hL0FBVFhBSndqUnc1UjJsdFlJVy1vX2xWXzZqTGF6X19yeXFIRVdGdDBVRFJUPXM5Ni1jIiwiaXNzIjoiaHR0cHM6Ly9zZWN1cmV0b2tlbi5nb29nbGUuY29tL3VtaC1hcHAtdWF0IiwiYXVkIjoidW1oLWFwcC11YXQiLCJhdXRoX3RpbWUiOjE2MzQwMDIwODcsInVzZXJfaWQiOiJ2aGFsbU40S084UFFHSFNSbGtiYXBiRVdVNm8xIiwic3ViIjoidmhhbG1ONEtPOFBRR0hTUmxrYmFwYkVXVTZvMSIsImlhdCI6MTYzNDAwMjA4NywiZXhwIjoxNjM0MDA1Njg3LCJlbWFpbCI6Imx1emZAZ3pzZW5kaS5jbiIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7Imdvb2dsZS5jb20iOlsiMTAwMTcwNzI2Njc2NzM5ODY4NzYyIl0sImVtYWlsIjpbImx1emZAZ3pzZW5kaS5jbiJdfSwic2lnbl9pbl9wcm92aWRlciI6Imdvb2dsZS5jb20ifX0.F-HBiaBArWKQ_B5xzmrthbWfqp7KqVvpBkmcK6g_Nnmjhu-OwrbUeRZRuuhJatHNQmxdMUUSIpV7jjgd-fDCKtma_sZi5bg7_GFTmNgsLD3lxqio5OSTIB-b6V79rDgsVmBKbFJZZNKIH6U8zvwma6yr7u1GYF1bV5Qw67oPQuSSIt5MpjPl-Ihs9TKkULiEJce3-T9JCrt-MdUX_3r1nBdRsyqzasg9DFVNzjTz6xq4EBWeShJXw46HHg0wUdWC4PX1VQr3dnJRTHgEu08YiKD5pd-6XsyVFv0AZW1GXrcKstqj_AqdShlRw0td-qjxGy_x2JEpYKOmiXtyQQy-9w"
val decodedToken = FirebaseAuth.getInstance().verifyIdToken(idToken)
val uid = decodedToken.uid
return uid
}
}



