認証に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>}
GData
svnをThis GData versionに置き換えようとしましたが、すべてが役に立ちません。私は端にいます。
Contacts API
ところで、Googleコンソールでオプションを「オン」にして、 forに追加-DGDATA_INCLUDE_CONTACTS_SERVICE=1
しました。Other C Flags
GData
私は何かを逃したのですか、それとも単に愚かですか?
お返事ありがとうございます!