【发布时间】:2015-12-02 17:40:49
【问题描述】:
我终于设法让 Google Drive API 使用 Swift 在 iOS 上运行。
我可以访问我的 Google Drive,下载文件夹和文件名,所以我知道基本身份验证和 API 正在工作。
问题是当我尝试上传一个小文件时 - 生成了这个错误
reason: 'unexpected response data (uploading to the wrong URL?)
{"error":{"code":403,"message":"Insufficient Permission","data":[{"domain":"global","reason":"insufficientPermissions","message":"Insufficient Permission"}]},"id":"gtl_7"}'
我已经设置了一个看起来像有效的 OAuth 2.0 客户端 ID,但是当我第一次尝试这个时,我设置了错误的授权范围(来自我复制的示例) - 'kGTLAuthScopeDriveReadonly'。我现在已将其更改为“kGTLAuthScopeDrive”,但我担心该应用可能仍在使用原始范围,因为我无法强制重新登录。
这是我用来检查我是否已登录的代码
func checkAuthorisation()
{
if let auth = GTMOAuth2ViewControllerTouch.authForGoogleFromKeychainForName(
kKeychainItemName,
clientID: kClientID,
clientSecret: kClientSecret)
{
service.authorizer = auth
}
else
{
presentViewController(
createAuthController(),
animated: true,
completion: nil
)
}
}
这是我的上传代码
let metaData = GTLDriveFile()
metaData.title = "testfile.DAT"
let dataGoogleDrive = strMessage.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
let uploadParamaters = GTLUploadParameters(data: dataGoogleDrive!, MIMEType: "text/plain")
let query = GTLQueryDrive.queryForFilesInsertWithObject(metaData, uploadParameters: uploadParamaters)
let serviceTicket = dataModel.googleDrive.service.executeQuery(query, completionHandler:
{(ticket, file, error) -> Void in
print("complete")
})
我发现很多帖子描述了设置 Google Drive API 的困难,但这不再是问题了。
- 问题仅仅是我仍在使用具有错误范围的缓存凭据吗?如果是这样,我该如何冲洗?
- 我需要在 Google Developer Console 中配置什么吗?有一个选项可将 Drive API 配置为“允许用户使用此应用程序创建新文档”。但是当我尝试使用它时,它不允许我保存更改。
【问题讨论】:
标签: google-drive-api google-oauth