2017-02-21 10 views
3

Я использую Google диск API.When я пытаюсь извлечь файл из диска с помощьюGoogle Drive API: Недостаточные IOS разрешений

let query = GTLQueryDrive.queryForFilesList() 
    let service = GTLServiceDrive() 
    query?.pageSize = 1 
    query?.fields = “files” 
    service.executeQuery(
     query!, 
     delegate: self, 
     didFinish: #selector(self.displayResult(ticket:finishedWithObject:error:)) 
) 

я получаю ошибку как

«Операция не может »будет завершено. (Недостаточное разрешение).

Любые знает, какое разрешение мне нужно настроить в панели управления?

+0

Вы должны реактивировать Drive API в Google API консоли, если не чем активировать –

+0

Пожалуйста, проверьте это https://developers.google .com/drive/v3/web/about-auth –

+0

В какой области вы используете аутентификацию? @Lalitkumar, который не включен в ошибке консоли разработчика. – DaImTo

ответ

0

Обязательно используйте Google Sign In, если пользователи должны получить доступ к непубличному файлу. Или вы заинтересованы в списке файлов, связанных с пользователем.

Для этого сначала попросите вход. Убедитесь, что вы также установили UIDelegate в Google Sign In, чтобы в настоящее время ввести экран входа в систему в нужный момент времени: GIDSignInUIDelegate. Чтобы представить его, вы можете позвонить:

GIDSignIn.sharedInstance().signIn() 

Если пользователи были подписаны в уже, вы можете позвонить:

if userSignedInBefore { 
    GIDSignIn.sharedInstance().signInSilently() 
} 

Предполагая, что вы получили ваш запрос вызывается в конкретном классе, как это (используется для иллюстрирующий идею):

class Requester { 
    static let service = GTLServiceDrive() 

    static func fetchData() { 
     let query = GTLQueryDrive.queryForFilesList() 
     query?.pageSize = 1 
     query?.fields = “files” 
     service.executeQuery(query!, delegate: self, didFinish: #selector(self.displayResult(ticket:finishedWithObject:error:))) 
    } 
    ... 
} 

Кроме того, вам понадобится делегат GIDSignInDelegate это один будет заботиться и хранить соответствующую информацию пользователя, когда пользователь входит в систему:

// https://developers.google.com/identity/sign-in/ios/ 
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) { 
    // Perform any operations when the user disconnects from app here. 
    // ... 
    if (error == nil) { 
     // Perform any operations on signed in user here. 
     //   let userId = user.userID     // For client-side use only! 
     //   let idToken = user.authentication.idToken // Safe to send to the server 
     // .... 
     // Here you will receive an authorizer instance that implements the GTMFetcherAuthorizationProtocol protocol. 
     // This authorizer instance will be required by your GTLRDriveService services as authorizer reference. 
     // https://developers.google.com/identity/sign-in/ios/api/interface_g_i_d_authentication 
     var authorizer = user.authentication.fetcherAuthorizer() 

     // Here you can trigger any callback to now fetch the desired data 
     Requester.service.authorizer = authorizer 
     Requester.fetchData() 
    } else { 
     print("\(error.localizedDescription)") 
    } 
} 

Для получения дополнительной информации или осуществления выборки взглянуть на Google, документации: https://developers.google.com/drive/v3/web/quickstart/ios