Swift4에서 GoogleCalendarAPI를 두드려 보았습니다.

경위



Swift에서 GoogleAPI를 이용할 때의 튜토리얼적인 자료등이 너무 적다고 생각했으므로 앞으로 이용되는 분의 참고가 되면 좋겠다고 생각했기 때문에. 라고 할까 iOS 더 이상 표시조차 되어 있지 않다구나...

개발 환경 및 절차



개발 환경


  • Swift 4.1.2
  • Xcode 9.4.1

  • 절차



    크게 나누어 Google API Console편,Xcode편,개발편입니다.
    하나씩 진행합시다!

    Google API Console에서 작업



    Google API Console 에서 다음 두 개를 등록합니다. 두 가지 모두 API를 두드리는 데 필수적인 값이므로 확실히 입수합시다!
    이 근처의 설정은 Qiita 등으로 기사가 풍부하기 때문에 달리기로 갑니다.

    클라이언트 ID 등록



    이쪽의 기사 를 참고로 클라이언트 ID를 취득합니다. (알기 쉬운 기사 정말로 감사합니다!!)
    간단히 요약하면 프로젝트를 만들고 자격 증명을 선택하고 클라이언트 ID를 얻습니다.
    이미지로 정리하면 다음 화면에서 클라이언트 ID를 선택합니다.

    그리고 여기에서 제대로 iOS를 선택하고 자신의 앱 이름과 번들 ID도 제대로 입력합시다.

    그런 다음 표시되는 클라이언트 ID를 기록해 둡니다.

    API 키 가져오기



    이것은 간단합니다.
    자격 증명 만들기 오른쪽을 누르면 API 키를 만들 때 나타납니다.
    이쪽도 메모 해 주세요.

    Xcode에서 작업



    점점 갑니다! !
    여기서 작업은 간단합니다!

    라이브러리 도입



    필요한 라이브러리는 Google 인증을 위해 GTMAppAuth , 나중에 API를 두드리도록 Alamofire
    Podfile은 이런 느낌입니다.
    platform :ios, '10.0'
    
    target 'あなたのアプリ名'do
    
      use_frameworks!
    
      pod 'GTMAppAuth'
      pod 'Alamofire'
      pod 'SwiftyJSON'
    end
    

    URL Types 등록



    Google API의 자격 증명 페이지에서 방금 만든 자격 증명의 세부 정보 페이지로 이동합니다.
    그런 다음 iOS URL 구성표 열에 있는 값을 복사합니다.

    Xcode로 돌아가 Info의 URL Types에서 +를 누르고 URL Scheme의 열에 값을 붙여 넣습니다.

    막상 개발



    마침내 코딩으로 이동할 수 있습니다!
    인증 부분과 API 두드리는 부분의 2부 구성입니다!

    Google 인증



    인증 부분은 이쪽의 기사 를 참고로 했습니다. (iOS에서 GoogleAPI 계열의 기사가 적기 때문에 정말 구원되었습니다. 감사합니다.)

    Delegate의 부분은 참고 페이지와 같이 추기해 주세요.
    ViewController는

    viewController
    import UIKit
    import AppAuth
    import GTMAppAuth
    
    class ViewController: UIViewController {
    
        private let scopes = ["https://www.googleapis.com/auth/calendar","https://www.googleapis.com/auth/calendar.readonly","https://www.googleapis.com/auth/calendar.events","https://www.googleapis.com/auth/calendar.events.readonly"]
        private let kClientID = "クライアントID"
        private let kRedirectURL = URL.init(string: "リバースクライアントID:/oauthredirect")
        private let configuration = GTMAppAuthFetcherAuthorization.configurationForGoogle()
        private var authorization: GTMAppAuthFetcherAuthorization?
    
        override func viewDidLoad() {
            super.viewDidLoad()
            let request = OIDAuthorizationRequest.init(configuration: configuration,
                                                       clientId: kClientID,
                                                       scopes: self.scopes,
                                                       redirectURL: kRedirectURL!,
                                                       responseType: OIDResponseTypeCode,
                                                       additionalParameters: nil)
            let appDelegate: AppDelegate = UIApplication.shared.delegate as! AppDelegate
            print("Initiating authorization request with scope: \(request.scope!)")
    
            appDelegate.currentAuthorizationFlow = OIDAuthState.authState(byPresenting: request,
                presenting: self,
                callback: { (authState, error) in if (authState != nil) {
                // 認証情報オブジェクトを生成
                self.authorization = GTMAppAuthFetcherAuthorization.init(authState: authState!)
                let accessToken = authState?.lastTokenResponse?.accessToken
                print("Authorization トークンを取得しました:\(String(describing: accessToken))")
    
                }
            })
        }
    

    거의 참고대로입니다. 단지 API마다 스코프의 부분이 다르기 때문에 Google APIs Explorer 를 참고로 자신에게 맞는 스코프를 찾아 주세요.
    이번은 calendar.events.list이므로, 4개의 스코프를 설정했습니다.

    Alamofire와 SwiftyJSON



    구글에서 잘 돌려준다.
    alamofire가 요청을 보내는 부분은.
    SwiftyJSON에 관해서는 공부를 위해서 사용해 보았습니다만 사용하기 쉽고 좋았습니다!

    도서관

    이하 그 구현 코드가 됩니다.
    Alamofire.request("https://www.googleapis.com/calendar/v3/calendars/メールアドレス/events?key=あなたのAPIキー", method:.get)
                .responseJSON{response in
                    let json = JSON(response.result.value)
                    json["items"].forEach{(_, data) in
                        let summary = data["summary"].string
                        print(summary)
                    print("イベントの取得に成功しました。")
                }
            }
    

    그 결과



    Google APIs Explorer
    이런 식으로 얻을 수있었습니다! !

    후기



    Swift에서는 처음으로 API를 두드린 것입니다 대단한 달성감을 느꼈습니다. 아직도 공부해 나갈거야!
    질문, 의견을 기다리고 있습니다.
    또 완성품은 에도 두고 있으므로 참고가 되면. 그럼!

    좋은 웹페이지 즐겨찾기