我已经为此工作了一天以上所以现在请求帮助!我正在尝试编写一个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库进行服务帐户身份验证,如果是这样,我在参数或初始化中遗漏了一些明显的内容。
由于
答案 0 :(得分:0)
问题可能是kGTLAuthScopeStorageDevstorageFullControl
是一个const,并且把它放在@“”里面,你创建一个字面意思是“kGTLAuthScopeStorageDevstorageFullControl”的NSString,它不等于方法可能的const值期待。
答案 1 :(得分:0)
不幸的是,根据讨论组的说法,Google API Objective C库中不支持服务帐户,因为Objective C库仅用于构建客户端应用程序:
https://groups.google.com/forum/#!topic/gtm-oauth2/fWzElFvKdEU