Обязательно используйте 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
Вы должны реактивировать Drive API в Google API консоли, если не чем активировать –
Пожалуйста, проверьте это https://developers.google .com/drive/v3/web/about-auth –
В какой области вы используете аутентификацию? @Lalitkumar, который не включен в ошибке консоли разработчика. – DaImTo