gdata-objective-c-client と oauth 2.0 を使用して Google に接続するアプリに取り組んでいます。ユーザーのスプレッドシートを表示したい。http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Examples/#Examples%2FDocsSampleを見て oauth の使用方法を確認したところ、すべてのドキュメントを一覧表示できましたとスプレッドシートですが、スプレッドシートを表示したいだけなので、サービスを変更しましたが、エラーが発生して何も表示されません。
これは私のコードです:
@implementation ViewController
@synthesize accessToken;
@synthesize mDoclistFetchTicket;
@synthesize mWorksheetFeed;
@synthesize mSpreadsheetFeed;
static NSString *const kMyClientID = @"199740745364-22lugf8undgv0rc0ucbfpgsn3v90lfsd.apps.googleusercontent.com";
static NSString *const kMyClientSecret = @"dPFs5D66kLyQIgUNL6igKUoX";
static NSString *const kKeychainItemName = @"casa";
- (GDataServiceGoogleSpreadsheet *)spreadsheetService {
static GDataServiceGoogleSpreadsheet* service = nil;
if (!service) {
service = [[GDataServiceGoogleSpreadsheet alloc] init];
[service setShouldCacheResponseData:YES];
[service setServiceShouldFollowNextLinks:YES];
}
return service;
}
- (void) mifetch {
GDataServiceGoogleSpreadsheet *service = [self spreadsheetService];
GDataServiceTicket *ticket;
//HERE IS WHERE I GET THE ERROR
NSURL *feedURL = [NSURL URLWithString: kGDataGoogleSpreadsheetsPrivateFullFeed];
ticket = [service fetchFeedWithURL:feedURL
delegate:self
didFinishSelector:@selector(ticket:finishedWithFeed:error:)];
mDoclistFetchTicket = ticket;
}
- (void) ticket: (GDataServiceTicket *) ticket
finishedWithFeed: (GDataFeedSpreadsheet *) feed
error: (NSError *) error {
mSpreadsheetFeed = feed;
}
- (void)authorize {
NSString *scope = @"https://spreadsheets.google.com/feeds";
GTMOAuth2ViewControllerTouch *windowController = [[GTMOAuth2ViewControllerTouch alloc]
initWithScope:scope
clientID:kMyClientID
clientSecret:kMyClientSecret
keychainItemName:kKeychainItemName
delegate:self
finishedSelector:@selector(viewController:finishedWithAuth:error:)];
[[self navigationController] pushViewController:windowController animated:YES];
}
- (IBAction)autenticarse
{
[self authorize];
}
- (IBAction)listar:(id)sender
{
[self performSegueWithIdentifier:@"displaydocs" sender:sender];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"displaydocs"])
{
VistaTableViewController *vistatableview = [segue destinationViewController];
vistatableview.delegate = self;
vistatableview.mSpreadsheetFeed2 = mSpreadsheetFeed;
}
}
- (void)viewController:(GTMOAuth2ViewControllerTouch *)viewController
finishedWithAuth:(GTMOAuth2Authentication *)auth
error:(NSError *)error
{
[[self docsService] setAuthorizer:auth];
[self mifetch];
}
@end
そして、これはXcodeが言うことです:
serviceBase: objectFetcher:GTMHTTPFetcher 0xe5c7580 (https://spreadsheets.google.com/feeds/spreadsheets/private/full) failedWithStatus:404 データ
最初にドキュメントとスプレッドシートを示したとき、次のように GDataServiceGoogleDocs を使用しました。
- (GDataServiceGoogleDocs *)docsService {
static GDataServiceGoogleDocs* service = nil;
if (!service) {
service = [[GDataServiceGoogleDocs alloc] init];
[service setShouldCacheResponseData:YES];
[service setServiceShouldFollowNextLinks:YES];
[service setIsServiceRetryEnabled:YES];
}
return service;
}
そして、フィードURLを作成するために、私はこれを使用しました:
NSURL *feedURL = [GDataServiceGoogleDocs docsFeedURL];
しかし、スプレッドシートだけを表示するには、どの feedURL を使用する必要がありますか?
ありがとう!!