4

我已经为此工作了一天多,所以现在寻求帮助!我正在尝试编写一个使用 google 服务帐户进行身份验证的 iOS 应用程序,以便访问 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 库进行服务帐户身份验证,如果是,我是否在参数或初始化中遗漏了一些明显的东西。

谢谢

4

2 回答 2

0

问题可能在于它kGTLAuthScopeStorageDevstorageFullControl是一个 const,并且通过将它放在 @"" 中,您正在创建一个字面上为“kGTLAuthScopeStorageDevstorageFullControl”的 NSString,它不等于该方法可能期望的 const 值。

于 2014-08-28T20:20:30.397 回答
0

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

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

于 2015-09-03T10:43:20.700 回答