0

Google+ アカウントから現在のユーザーのメール ID、ユーザー ID、ユーザー名を取得するアプリケーションを作成しようとしています。コードの一部は次のとおりです。

- (IBAction)googleSigninBtnTapped:(id)sender
{

    [GPPSignInButton class];
    [GPPSignIn sharedInstance].clientID =[NSString stringWithFormat:@"MY APP ID"];
    GPPSignIn *signIn = [GPPSignIn sharedInstance];
    signIn.delegate = self;
    signIn.shouldFetchGoogleUserEmail = YES;
    signIn.shouldFetchGoogleUserID = YES;
    signIn.actions = [NSArray arrayWithObjects:
                      @"http://schemas.google.com/AddActivity",
                      @"http://schemas.google.com/BuyActivity",
                      @"http://schemas.google.com/CheckInActivity",
                      @"http://schemas.google.com/CommentActivity",
                      @"http://schemas.google.com/CreateActivity",
                      @"http://schemas.google.com/ListenActivity",
                      @"http://schemas.google.com/ReserveActivity",
                      @"http://schemas.google.com/ReviewActivity",
                      nil];
    [signIn trySilentAuthentication];
}

(void)finishedWithAuth:(GTMOAuth2Authentication *)auth error:(NSError )error 
{
 if (error) 
{
 NSLog(@"Status: Authentication error: %@", error); 
}
 else
 {
 NSLog(@"Status: Authenticated");
 NSLog(@"Email: %@",[GPPSignIn sharedInstance].authentication.userEmail); 
GTLServicePlus plusService = [[[GTLServicePlus alloc] init] autorelease]; 
plusService.retryEnabled = YES; 
[plusService setAuthorizer:[GPPSignIn sharedInstance].authentication]; 
GTLQueryPlus *query = [GTLQueryPlus queryForPeopleGetWithUserId:@"me"]; 
[plusService executeQuery:query completionHandler:^(GTLServiceTicket *ticket, GTLPlusPerson *person, NSError *error)
 { 
if (error)
 { 
GTMLoggerError(@"Error: %@", error); 
}
 else
 { 
[person retain]; 
NSLog(@"%@", person.displayName); 
NSLog(@"%@", person.identifier); 
}
 }]; 
} 
}

しかし、アプリを実行しようとすると、クラッシュして、

'-[__NSCFString gtm_stringByUnescapingFromURLArgument]: 認識されないセレクターがインスタンス 0x9e435b0 に送信されました'

誰でもこれについて私を助けることができます...!!!

前もって感謝します!!!

4

2 に答える 2

5

はい、-ObjC リンカー フラグが必要です。GoogleOpenSource フレームワークのカテゴリの 1 つが見つかりません。

セットアップ ガイドのステップ 3 を参照してください: https://developers.google.com/+/mobile/ios/getting-started#step_3_initialize_the_google_client

基本的には、その他のリンカー フラグに -ObjC を追加します (大文字にすることが重要です。注意してください)。また、プロジェクトに GooglePlus と GoogleOpenSource フレームワークの両方が含まれていることを確認してください。

于 2013-09-12T09:08:19.330 に答える
0

_objc を使用して、-lc++ という別のフラグを追加します。

于 2014-12-30T18:54:51.917 に答える