Google Sign-In 및 Google APlientForeST를 사용하여 Google 달력에 간단히 액세스

10165 단어 GCPiOSSwifttech

이 글의 내용


GCP를 통해 Google Calendar API를 사용하는 방법은 iOS 애플리케이션으로 Google 캘린더에 액세스하는 방법 중 하나입니다.
이 기사에서는 Google Sign-In 과 Google APlientForeST 두 프로그램 라이브러리를 사용하여 Google OAuth 인증을 수행하고 Google 달력에서 달력 예약 섹션을 가져오는 절차를 설명합니다.

라이브러리 소개, 가져오기 방법


우선 이번에 사용한 두 개의 프로그램 라이브러리에 대해 간단하게 설명해 드리겠습니다.

Google Sign-In


첫 번째는 "Google Sign-In"이라는 프로그램 라이브러리입니다.
이 라이브러리를 사용하면 iOS 애플리케이션을 통해 Google의 OAuth 인증을 쉽게 수행할 수 있습니다.
또한 Google 달력에서 데이트 권한을 쉽게 얻을 수 있습니다.
이 프로그램 라이브러리를 사용하여 인증할 때 GCP에서 취득한 'OAuth 클라이언트 ID' 와 'URL 방안' 이 필요합니다.
이 글은 GCP에서 그런 것을 얻는 방법을 설명하지 않았지만, 나는 바로 g가 나오고 싶다.

GoogleAPIClientForREST


두 번째는 "GoogleAPIClientForREST"이라는 프로그램 라이브러리입니다.
이 라이브러리는 Google의 다양한 API에 대한 액세스 데이터 등을 쉽게 얻을 수 있습니다.
방금 설명한 "Google Sign-In"과 같은 프로그램 라이브러리에서 얻은 로그인 사용자 정보를 이용하여 API에 접근할 수 있습니다.
이번에 Google Calendar API를 사용할 때 이 라이브러리를 사용합니다.
Google Calendar API에 액세스하려면 인증 때와 마찬가지로 GCP 설정에서 액세스해야 하며 이 기사에서는 생략됩니다.

라이브러리 가져오기 방법


Google Sign-In을 Google에서 CocoPods로 가져오는 것을 추천합니다. Google APlientForeST도 CocoPods에서 가져올 수 있기 때문에 Podfile에서 다음과 같이 기술pod install하면 프로그램 라이브러리를 가져옵니다.
Podfile
pod 'GoogleSignIn'
# Calendar API にアクセスできれば良いため、このように記述している
pod 'GoogleAPIClientForREST/Calendar', "1.5.2"

두 개의 라이브러리를 사용하여 Google 캘린더에 액세스


여기서부터 방금 소개한 두 개의 라이브러리를 사용한 아래의 내용을 설명한다.
  • Google Sign-In의 OAuth 인증 사용
  • Google APlient ForeST로 예약한 취득
  • Google Sign-In을 사용한 OAuth 인증


    이것에 관해서는 스스로 설명하지 않아도 된다공식 문서에 상세한 설명이 있기 때문에 나는 그것을 주로 참조하는 것이 좋다고 생각한다.
    당분간 Google Calendar API를 활용하기 위해서는 OAuth 인증 시 설정scopes이 필요합니다.
    역할 영역 목록에서 필요에 따라 작용역을 다음과 같은 내용으로 설정한 후 signIn 방법을 호출한다.
    let scopes = [
      "https://www.googleapis.com/auth/calendar.readonly",
      "https://www.googleapis.com/auth/calendar.events.readonly"
    ]
    
    GIDSignIn.sharedInstance()?.scopes = scopes
    GIDSignIn.sharedInstance()?.signIn()
    
    달력에 접근할 수 있는 권한을 얻은 후 OAuth 인증을 받을 수 있습니다.
    또한 주의해야 할 것은 GIDSignIn.sharedInstance()를 비롯한 GIDSignIn계의 속성과 방법은 대부분이implicitly unwrapped 옵션al로 표현되기 때문에 nil의 값에 접근하지 않기 위해 코드를 쓸 필요가 있다고 생각합니다.(문서에 기재된 샘플에 따라 쓰면 예상치 못한 시기에 붕괴될 수도 있다.)

    구글 인터페이스 ForeST를 사용하여 예약 가져오기


    앞에서 설명한 OAuth 인증이 순조롭게 성공한 상태, 예를 들어 아래 코드를 통해 GIDGoogleUser 유형의 값을 얻을 수 있다.
    let gidCurrentUser = GIDSignIn.sharedInstance()?.currentUser
    
    이 유형의 값을 사용하는 동시에 Google APlientForeST에서 달력에서 데이트 코드를 가져오는 것은 다음과 같습니다.
    import GoogleAPIClientForREST
    import GoogleSignIn
    // このモジュールは GoogleAPIClientForREST を導入すると利用できるようになります
    import GTMSessionFetcher
    
    // ...
    let calendarService = GTLRCalendarService()
    // calendarService に OAuth 認証済みのユーザーの情報をセットする
    calendarService.authorizer = gidCurrentUser.authentication.fetcherAuthorizer()
    
    // カレンダーの予定検索用の Query を条件を指定しつつ作成していく
    let query = GTLRCalendarQuery_EventsList.query(withCalendarId: "primary") // primary を設定するとユーザーのプライマリカレンダーにアクセスできる
    query.timeMin = GTLRDateTime(dateComponents: minDateComponents)
    query.timeMax = GTLRDateTime(dateComponents: maxDateComponents)
    query.orderBy = "startTime"
    query.maxResults = 2500
    
    calendarService.executeQuery(query) { _, calendarEvents, error in
      if let error = error {
        // エラー処理
      }
      
      guard let calendarEvents = calendarEvents as? GTLRCalendar_Events,
            let items = calendarEvents.items
      else { return }
      
      // items などを利用して、予定取得成功時の処理を書いていく
    }
    
    단지 하나의 예일 뿐이지만 위에서 말한 바와 같이 달력의 예약을 얻어 응용 프로그램에서 다양한 처리를 할 수 있다.
    'Google APlient ForeST'에 이벤트용 유형 등이 준비돼 있어 이를 활용해 코드를 쓸 수 있지만, 뷰 등 웹사이트에서 사용할 때는 적절하게 처리하기 편한 유형으로 전환하는 것이 좋다.

    참고 자료

  • Google
  • iOS 애플리케이션에 Google 로그인 추가
  • 구글 API의 OAuth2.0 역할 영역
  • 구글에 로그인
  • DevelopersIO
  • Google 로그인 추가
  • Qiita
  • Google 캘린더를 통한 iOS 어플리케이션 액세스
  • Google Spreadsheet API의 메모
  • 블로그
  • [iOS] Google Sign-In을 통해 Google 캘린더에 액세스
  • 좋은 웹페이지 즐겨찾기