2

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 を使用する必要がありますか?

ありがとう!!

4

0 に答える 0