使用GTMOAuth2使用谷歌存储验证iOS的难度

时间:2014-06-04 10:58:16

标签: ios google-cloud-storage gtm-oauth2

我已经为此工作了一天以上所以现在请求帮助!我正在尝试编写一个iOS应用程序,使用Google服务帐户进行身份验证,以便访问Google存储空间。

我无法超越在authoriseRequest和尝试创建存储桶时发生的此错误。

  

错误Domain = com.google.GTMOAuth2 Code = -1001“无法完成操作。(com.google.GTMOAuth2错误-1001。)”UserInfo = 0x15640740 {request = {URL:https://www.googleapis.com/rpc?prettyPrint=false }}

这是我第一次使用google目标c库和我在网上找到的几乎所有示例,而stackOverflow中的目标是使用GTMOAuth2ViewControllerTouch,但我不是来自用户的身份验证

到目前为止,我已经得到了这个。

在我开始之前..

static GTLServiceStorage *storageService = nil;
static GTMOAuth2Authentication *auth;

在我的初学者......

auth = [ GTMOAuth2SignIn standardGoogleAuthenticationForScope:@"kGTLAuthScopeStorageDevstorageFullControl" clientID:@"my_client_id.apps.googleusercontent.com" clientSecret:@"my_client_secret"];
auth.redirectURI = @"urn:ietf:wg:oauth:2.0:oob";
// inititialising the auth token
[auth authorizeRequest:nil  delegate:self didFinishSelector:@selector(authentication:request:finishedWithError:)];

// init googleStorage Backend service.
if (!storageService) {
    storageService = [[GTLServiceStorage alloc] init];
    storageService.additionalHTTPHeaders = @{@"x-goog-project-id": @"my_project_id", @"Content-Type": @"application/json-rpc", @"Accept":
                                                 @"application/json-rpc"};
    storageService.authorizer = auth;
    storageService.retryEnabled = YES;
}

在一个创建存储桶的方法中,例如..

// Create a GTLStorageBucket.
GTLStorageBucket* bucket = [[GTLStorageBucket alloc] init];
bucket.name = @"myBucketName";
// Create the query
GTLQueryStorage *query = [GTLQueryStorage queryForBucketsInsertWithObject:bucket project:@"myGoogleProjectID"];
[storageService executeQuery:query completionHandler:^(GTLServiceTicket *ticket, GTLStorageBucket  *object, NSError *error) {
    NSLog(@"bucket %@", object);
}];

我的问题是,我是否正确使用gtmoauth2库进行服务帐户身份验证,如果是这样,我在参数或初始化中遗漏了一些明显的内容。

由于

2 个答案:

答案 0 :(得分:0)

问题可能是kGTLAuthScopeStorageDevstorageFullControl是一个const,并且把它放在@“”里面,你创建一个字面意思是“kGTLAuthScopeStorageDevstorageFullControl”的NSString,它不等于方法可能的const值期待。

答案 1 :(得分:0)

不幸的是,根据讨论组的说法,Google API Objective C库中不支持服务帐户,因为Objective C库仅用于构建客户端应用程序:

https://groups.google.com/forum/#!topic/gtm-oauth2/fWzElFvKdEU