iOS 응용 프로그램에서 Outlook 캘린더를 가져오는 방법(Swift)
입문
icrosoft Graph API를 사용하여 iOS 응용 프로그램에서 Outlook 캘린더를 가져오는 방법을 설명합니다.
icrosoft Graph API란 무엇입니까?
icrosoft365 데이터에 액세스하는 API
자세한 내용은 공식 문서를 참조하십시오.
https://docs.microsoft.com/ja-jp/graph/overview
전제 조건
Azure AD의 추가 방법은 다음과 같습니다.
https://blogs.technet.microsoft.com/jpazureid/2018/01/16/azuread-operation/
단계
공식 문서에 따라 실시하다.
https://docs.microsoft.com/ja-jp/azure/active-directory/develop/quickstart-v2-ios#option-2-register-and-manually-configure-your-application-and-code-sample
옵션 1(자동)을 어떻게 하는지 몰라서 이번에는 옵션 2(수동)로 진행합니다.
애플리케이션 등록
먼저 Azure에 애플리케이션을 등록합니다.
다음 페이지에 액세스하고 + 새 등록 을 클릭합니다.
https://aka.ms/MobileAppReg
이름을 입력하고 등록 을 클릭합니다.
[지원되는 계정 종류]에서 "이 조직 디렉터리에 있는 계정만"을 선택하면 단독 임대인 응용 프로그램이고, 다른 두 개를 선택하면 다중 임대인 응용 프로그램입니다.
이렇게 하면 응용 프로그램의 등록이 완성된다.
Bundle ID 업데이트
그런 다음 등록된 응용 프로그램에 Bundle ID를 추가합니다.
※ 공식 문서의 절차를 모르기 때문에 다른 방법으로 진행됩니다.
빠른 시작 > iOS 를 클릭합니다.
단계 1: 응용 프로그램 설정에서 "thischange for me 생성"을 누르십시오.
번들 ID에 iOS 응용 프로그램의 Bundle Identifier를 입력하고 업데이트를 클릭합니다.
다음 예제 코드의 Bundle ID는
com.microsoft.identitysample.MSALiOS
입니다.업데이트가 완료되면 녹색 검사가 있습니다.
※ Bundle ID를 변경하면 "Make this change forme"가 숨겨져 Bundle ID를 다시 변경할 수 없습니다.
변경하는 방법을 아는 사람이 있으면 알려주십시오
이 페이지의
kClientID
와 kAuthority
는 나중에 사용할 것이니 페이지를 열어 주십시오.실시
예제 코드 다운로드
아래에서 예시 코드를 다운로드하세요.
https://github.com/Azure-Samples/active-directory-ios-swift-native-v2/archive/master.zip
클라이언트 ID 및 인증 URL 업데이트
MSALiOS.Xcode에서 xcworkspace를 엽니다.
클라이언트 ID 및 유효성 검사 URL을 방금 열린 페이지에서 설명한 값으로 변경합니다.
ViewController.swift
- let kClientID = "{デフォルトのクライアントID}"
+ let kClientID = "{自アプリのクライアントID}"
…
let kAuthority = "https://login.microsoftonline.com/common" // マルチテナントアプリ
let kAuthority = "https://login.microsoftonline.com/{自アプリのディレクトリ(テナント)ID}" // シングルテナントアプリ
kAuthority
다세입자 응용 프로그램과 단세입자 응용 프로그램에서 지정한 값이 다르다.다세입자와 단세입자에 대한 정보는 공식 문서를 참조하십시오.
https://docs.microsoft.com/ja-jp/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant
권한 추가
필요에 따라 권한을 추가합니다.
일정표를 얻고 싶어서 추가했습니다
Calendars.Read
.달력을 가져오는 데 필요한 권한은 다음과 같습니다.
https://docs.microsoft.com/ja-jp/graph/api/user-list-calendarview?view=graph-rest-1.0&tabs=cs
ViewController.swift
let kScopes: [String] = ["https://graph.microsoft.com/User.Read",
"https://graph.microsoft.com/Calendars.Read"]
URL 스키마 변경
Info.plist에 설명된 URL 스키마를 다음과 같이 다시 작성합니다.
샘플 응용 프로그램이라면 이렇게 해도 일을 할 수 있지만, 고쳐 쓰는 것이 가장 좋다.
Info.plist
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
- <string>msauth.com.microsoft.identitysample.MSALiOS</string>
+ <string>msauth.$(PRODUCT_BUNDLE_IDENTIFIER)</string>
</array>
</dict>
</array>
디버깅
완료 후 확인 동작을 디버깅합니다.
Call Microsoft Graph API를 클릭합니다.
Continue를 클릭합니다.
icrosoft 계정을 입력하고 Next 를 클릭합니다.
암호를 입력하고 서명을 클릭합니다.
[Result from Graph:]에 JSON 데이터가 표시되면 로그인 성공!
캘린더 가져오기
자신의 일주일 달력을 얻는 과정을 실시한다.
Graph 자원 관리자에 로그인하여 API를 시도하고 조회와 응답 주체를 이해하여 실현하기 쉽습니다.
https://developer.microsoft.com/ja-jp/graph/graph-explorer
예제 코드를 복사하는
getContentWithToken()
방법은 방법 이름과 URL만 변경하면 됩니다.ViewController.swift
private func getCalendarWithToken() {
let formatter = DateFormatter.fullISO8601
let startDateTime = formatter.string(from: Date())
let endDateTime = formatter.string(from: Date(timeIntervalSinceNow: 60*60*24*7))
let urlString = kGraphURI + "calendarview?startdatetime=" + startDateTime + "&enddatetime=" + endDateTime
// Specify the Graph API endpoint
let url = URL(string: urlString)
var request = URLRequest(url: url!)
// Set the Authorization header for the request. We use Bearer tokens, so we specify Bearer + the token we got from the result
request.setValue("Bearer \(self.accessToken)", forHTTPHeaderField: "Authorization")
URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
self.updateLogging(text: "Couldn't get graph result: \(error)")
return
}
guard let result = try? JSONSerialization.jsonObject(with: data!, options: []) else {
self.updateLogging(text: "Couldn't deserialize result JSON")
return
}
self.updateLogging(text: "Result from Graph: \(result))")
}.resume()
}
}
DateFormatter+ISO8601.swiftimport Foundation
extension DateFormatter {
static let fullISO8601: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
formatter.calendar = Calendar(identifier: .iso8601)
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.locale = Locale(identifier: "en_US_POSIX")
return formatter
}()
}
getContentWithToken()
교체 및 디버깅 방법.(2곳)ViewController.swift
- self.getContentWithToken()
+ self.getCalendarWithToken()
달력의 데이터를 JSON으로 표시하면 성공!끝내다
그리고 이 코드를 참고하여 제품 응용 프로그램을 설치하면 됩니다.
iOS 응용 프로그램에서 Microsoft의 데이터를 가져오는 것은 매우 어렵다
참조 링크
[Swift] 몰드 사용을 고려한다는 뜻(Codable 재입문) - Qiita
ISO8601 형식의 날짜를 문자열로 변환하는 방법을 참조했습니다.
Reference
이 문제에 관하여(iOS 응용 프로그램에서 Outlook 캘린더를 가져오는 방법(Swift)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/uhooi/items/da1a061b0e8221a9cc42텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)