0

認証にGData Obcective-C クライアントを使用し、そこから連絡先を取得して、gmail をアプリに統合します。認証にはgtm-oauth2を使用しますが、この部分はうまく機能します。

GTMOAuth2ViewControllerTouch初期化の私の範囲:

NSString *scope = [NSString stringWithFormat:@"https://www.googleapis.com/auth/plus.me %@", [GDataServiceGoogleContact authorizationScope]];

認証初期化:

__keychainItemName = [infoPlist objectForKey:@"GoogleKeyChainItem"];

__auth = [GTMOAuth2ViewControllerTouch
                  authForGoogleFromKeychainForName:__keychainItemName
                  clientID:[infoPlist objectForKey:@"GoogleClientID"]
                  clientSecret:[infoPlist objectForKey:@"GoogleClientSecret"]];

構築にはこのGDataブログを使用します(写真などあり)

http://hoishing.wordpress.com/2011/08/23/gdata-objective-c-client-setup-in-xcode-4/

GDataこれをコンソールで実行するだけで、Googleリポジトリから取得できます

# Non-members may check out a read-only working copy anonymously over HTTP.
svn checkout http://gdata-objectivec-client.googlecode.com/svn/trunk/ gdata-objectivec-client-read-only

連絡先を取得しようとすると問題が発生します。

- (GDataServiceGoogleContact *)contactService {

    static GDataServiceGoogleContact* service = nil;

    if (!service) {
        service = [[GDataServiceGoogleContact alloc] init];
        [service setShouldCacheResponseData:YES];
        [service setServiceShouldFollowNextLinks:YES];
        [service setAuthorizer:__auth];
    }

    return service;
}

- (void) methodExecute {
    GDataServiceGoogleContact *service = [self contactService];

    GDataServiceTicket *ticket;

    const int kBuncha = 2000;

    NSURL *feedURL =  [GDataServiceGoogleContact contactFeedURLForUserID:kGDataServiceDefaultUser];

    GDataQueryContact *query = [GDataQueryContact contactQueryWithFeedURL:feedURL];
    [query setShouldShowDeleted:NO];
    [query setMaxResults:kBuncha];

    [ticket setAuthorizer:__auth];

    ticket = [service fetchFeedWithQuery:query
                                delegate:self
    didFinishSelector:@selector(contactsFetchTicket:finishedWithFeed:error:)];
}

- (void)contactsFetchTicket:(GDataServiceTicket *)ticket
           finishedWithFeed:(GDataFeedContact *)feed
                      error:(NSError *)error {

    if(error != nil){
        NSLog(@"%@\n\n\n%@", error, feed);
    }
    else{
        NSLog(@"%@\n\n\n%@", error, feed.entries);
    }
}

そしてここにポイントがあります - にある必要があるのGDataEntryContactではなく、オブジェクトfeedの配列を取得しGDataEntryBaseます。オブジェクト記述の例があります:

GDataEntryBase 0xb3b2300: {v:3.1 title:John Jackson etag:"Rn4_fjVSLit***." 
categories:1 links:photo,self,edit edited:2013-03-14T17:55:57Z
id:http://www.google.com/m8/feeds/contacts/myemail%40gmail.com/base/kindofid 
unparsed:<gContact:groupMembershipInfo>,<gd:name>,<gd:phoneNumber>}

GDatasvnをThis GData versionに置き換えようとしましたが、すべてが役に立ちません。私は端にいます。

Contacts APIところで、Googleコンソールでオプションを「オン」にして、 forに追加-DGDATA_INCLUDE_CONTACTS_SERVICE=1しました。Other C FlagsGData

私は何かを逃したのですか、それとも単に愚かですか?

お返事ありがとうございます!

4

1 に答える 1

0

プロジェクトのみに他のリンカー フラグを入力しましたが、何らかの理由でターゲット全体に適用されません。

于 2014-04-02T16:36:26.947 に答える