1

iOS アプリで Google 認証を行った後はどうすればよいですか? アプリケーションへのアクセスを許可するとき。「このコードをコピーして、アプリケーションに切り替えて、そこにコピーしてください:」というウィンドウが表示されます。ここから先に進む方法がわかりません。これは私が書くコードです

SEL finishedSel = @selector(viewController:finishedWithAuth:error:);

viewController = [[GTMOAuth2ViewControllerTouch 
                                     controllerWithScope:scope
                                      clientID:clientID
                                      clientSecret:clientSecret
                                      keychainItemName:nil
                                      delegate:self                                                     finishedSelector:finishedSel]autorelease];


-(void)viewController:(GTMOAuth2ViewControllerTouch *)viewController
      finishedWithAuth:(GTMOAuth2Authentication *)auth
                 error:(NSError *)error {
    if (error != nil) {
        // Authentication failed
    } else {
        // Authentication succeeded
    }
}
4

2 に答える 2

4

認証
を取得した後、それを使用してユーザーデータを取得できます。このコードを参照してください

 NSString *urlStr = @"https://www.googleapis.com/oauth2/v1/userinfo?alt=json";
 NSURL *url = [NSURL URLWithString:urlStr];
 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
 [self.auth authorizeRequest:request
              completionHandler:^(NSError *error) {
                  NSString *output = nil;
                  if (error) {
                      output = [error description];
                  } else {
                      // Synchronous fetches like this are a really bad idea in Cocoa applications
                      //
                      // For a very easy async alternative, we could use GTMHTTPFetcher
                      NSURLResponse *response = nil;
                      NSData *data = [NSURLConnection sendSynchronousRequest:request
                                                           returningResponse:&response
                                                                       error:&error];
                      if (data) {
                          // API fetch succeeded
                          output = [[[NSString alloc] initWithData:data
                                                          encoding:NSUTF8StringEncoding] autorelease];

                          NSLog(@"output:%@",output);


                      } else {
                          // fetch failed
                          output = [error description];
                      }
                  }

              }];

このURLをスコープhttps://www.googleapis.com/auth/userinfo.profileに追加する必要があることに注意してください

于 2012-05-06T06:45:02.720 に答える
0

このリンクを確認してくださいgtm-oauth2

これがfinishedWithAuthのサンプルコードです

(void)viewController:(GTMOAuth2ViewControllerTouch *)viewController finishedWithAuth:(GTMOAuth2Authentication *)auth error:(NSError *)error {
      if (error != nil) {
          // Authentication failed (perhaps the user denied access, or closed the
          // window before granting access)
          NSLog(@"Authentication error: %@", error);
          NSData *responseData = [[error userInfo] objectForKey:@"data"]; // kGTMHTTPFetcherStatusDataKey
          if ([responseData length] > 0) {
              // show the body of the server's authentication failure response
              NSString *str = [[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] autorelease];
              NSLog(@"%@", str);
          }
          self.auth = nil;
      } else {
          // Authentication succeeded
          //
          // At this point, we either use the authentication object to explicitly
          // authorize requests, like
          //
          //  [auth authorizeRequest:myNSURLMutableRequest
          //       completionHandler:^(NSError *error) {
          //         if (error == nil) {
          //           // request here has been authorized
          //         }
          //       }];
          //
          // or store the authentication object into a fetcher or a Google API service
          // object like
          //
          //   [fetcher setAuthorizer:auth];
          // save the authentication object
          self.auth = auth;
      }
}
于 2012-04-30T06:54:19.110 に答える