Storage.swift 파일에 각각 사용할 키들 등록 후 변수명으로 사용
github 에 푸쉬하기 전 .gitignore에 Storage.swift 작성하여 api 키를 숨겨주었다!
이젠 메일로 매번 오던 your api key exposed 를 안볼지도...
import KakaoSDKCommon
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// api 키를 숨겨서 변수명으로 사용!
KakaoSDK.initSDK(appKey: "\(Storage().kakao_appkey)")
return true
}
import KakaoSDKAuth
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
if let url = URLContexts.first?.url {
if(AuthApi.isKakaoTalkLoginUrl(url)){
_ = AuthController.handleOpenUrl(url: url)
}
}
}
import UIKit
import KakaoSDKAuth
import KakaoSDKUser
import KakaoSDKCommon
class LoginViewController : UIViewController {
@IBOutlet weak var NickNameLabel: UILabel!
@IBOutlet weak var EmailLabel: UILabel!
@IBOutlet weak var KakaoLogin: UIButton!
@IBOutlet weak var LogoutButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
}
// 유저 정보 가져오기
func setUserInfo() {
UserApi.shared.me {(user, error) in
if let error = error {
print(error)
} else {
print("nickname: \(user?.kakaoAccount?.profile?.nickname ?? "닉네임 없음")")
print("email: \(user?.kakaoAccount?.email ?? "이메일 없음")")
guard let userId = user?.id else {return}
print("닉네임 : \(user?.kakaoAccount?.profile?.nickname ?? "닉네임 없음").....이메일 : \(user?.kakaoAccount?.email ?? "이메일 없음"). . . . .유저 ID : \(userId)")
self.NickNameLabel.text = "Nickname : \(user?.kakaoAccount?.profile?.nickname ?? "닉네임 없음")"
self.EmailLabel.text = "Email : \(user?.kakaoAccount?.email ?? "이메일 없음")"
}
}
}
func resetUserInfo() {
self.NickNameLabel.text = "로그아웃에 성공했습니다"
self.EmailLabel.text = ""
}
@IBAction func LoginAction(_ sender: Any) {
if (UserApi.isKakaoTalkLoginAvailable()) {
UserApi.shared.loginWithKakaoTalk {(oauthToken, error) in
if let error = error {
print(error)
}
else {
print("카카오톡 앱으로 로그인 성공")
self.setUserInfo()
//do something
_ = oauthToken
}
}
} else {
UserApi.shared.loginWithKakaoAccount {(oauthToken, error) in
if let error = error {
print(error)
}
else {
print("카카오게정으로 로그인 성공")
self.setUserInfo()
guard let nextVc =
self.storyboard?.instantiateViewController(withIdentifier: "MainNavigationVC")
else {return}
nextVc.modalPresentationStyle = UIModalPresentationStyle.fullScreen
self.present(nextVc, animated: true)
//do something
_ = oauthToken
}
}
}
}
@IBAction func LogoutAction(_ sender: Any) {
UserApi.shared.logout{(error) in
if let error = error {
print(error)
} else {
self.resetUserInfo()
print("kakao logout success")
}
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//API 요청
HospitalRequest().getHospitalData(self)
collectionViewDelegate()
self.CollectionView.register(UINib(nibName: "CollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "cell")
}
func didSuccess(_ response: HospitalResponse) {
HosNumber = response.localdata020301.row[2].sitewhladdr
HosName = response.localdata020301.row[1].bplcnm
}