Как аутентифицировать один диск с помощью MSAL API в Swift.? - PullRequest
0 голосов
/ 08 ноября 2018

Я использую библиотеку MSAL pod для аутентификации учетной записи Microsoft. После этого я хочу получить доступ к определенным файлам учетной записи OneDrive в моем приложении ios.

ServiceConstant класс

struct ServiceConstants {
    static let kBaseURL = "https://graph.microsoft.com/v1.0"
    static let kDrive = "/users/fcd9cff6658ad065/drive"
}

ViewController.swift

override func viewDidLoad() {
        super.viewDidLoad()        

        getAllDocumentsFromOneDrive()
    }

func getAllDocumentsFromOneDrive() {
        // Setup OneDrive Linking
        let urlString = ServiceConstants.kBaseURL + ServiceConstants.kDrive
        print("URL : \(urlString)")
        print("Token : \(accessTokenMSAL)")

        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.httpMethod = "GET"
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
        request.setValue("Bearer \(accessTokenMSAL)", forHTTPHeaderField: "Authorization")

        URLSession.shared.dataTask(with: request) { (data, response, error) in
            if let err = error {
                print("Error : \(err.localizedDescription)")
                return
            }

            guard let result = try? JSONSerialization.jsonObject(with: data!, options: []) else {
                print("Couldn't deserialize result JSON")
                return
            }

            print(response)
            print("Result from Graph: \(result))")

        }.resume()
    }

Вывод: это вывод при доступе к конкретным файлам onedrive пользователя.

Result from Graph: {
    error =     {
        code = unauthenticated;
        innerError =         {
            date = "2018-11-08T05:15:10";
            "request-id" = "b5372309-dc14-4d66-a274-9ca94fcbf04f";
        };
        message = "Must be authenticated to use '/drive' syntax";
    };
})
...