2013-06-15 3 views
4

Я пытаюсь извлечь JSON из API хостов AdSense с помощью этого кодаTrouble извлечения JSON данных с помощью Google API на прошивке

#import "ViewController.h" 
#import "GTMOAuth2Authentication.h" 
#import "GTMOAuth2ViewControllerTouch.h" 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self signInToGoogle]; 
} 


- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 


//Creat your Google APP here: https://code.google.com/apis/console/ and get the key and secret 

#define GoogleClientID @"xxxxxxxxx" 
#define GoogleClientSecret @"xxxxxxxxx" 
#define GoogleAuthURL @"https://accounts.google.com/o/oauth2/auth" 
#define GoogleTokenURL @"https://accounts.google.com/o/oauth2/token" 


- (GTMOAuth2Authentication *)authForGoogle 
{ 
    //This URL is defined by the individual 3rd party APIs, be sure to read their documentation 

    NSURL * tokenURL = [NSURL URLWithString:GoogleTokenURL]; 
    // We'll make up an arbitrary redirectURI. The controller will watch for 
    // the server to redirect the web view to this URI, but this URI will not be 
    // loaded, so it need not be for any actual web page. This needs to match the URI set as the 
    // redirect URI when configuring the app with Instagram. 
    NSString * redirectURI = @"urn:ietf:wg:oauth:2.0:oob"; 
    GTMOAuth2Authentication * auth; 

    auth = [GTMOAuth2Authentication authenticationWithServiceProvider:@"lifebeat" 
                  tokenURL:tokenURL 
                  redirectURI:redirectURI 
                  clientID:GoogleClientID 
                 clientSecret:GoogleClientSecret]; 
    auth.scope = @"https://www.googleapis.com/auth/adsense"; 
    return auth; 
} 


- (void)signInToGoogle 
{ 
    GTMOAuth2Authentication * auth = [self authForGoogle]; 

    // Display the authentication view 
    GTMOAuth2ViewControllerTouch * viewController = [[GTMOAuth2ViewControllerTouch alloc] initWithAuthentication:auth 
                           authorizationURL:[NSURL URLWithString:GoogleAuthURL] 
                           keychainItemName:@"GoogleKeychainName" 
                             delegate:self 
                           finishedSelector:@selector(viewController:finishedWithAuth:error:)]; 
    [self.navigationController pushViewController:viewController animated:YES]; 

} 


- (void)viewController:(GTMOAuth2ViewControllerTouch *)viewController 
     finishedWithAuth:(GTMOAuth2Authentication *)auth 
       error:(NSError *)error 
{ 
    NSLog(@"finished"); 
    NSLog(@"auth access token: %@", auth.accessToken); 

    [self.navigationController popToViewController:self animated:NO]; 
    if (error != nil) { 
     UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Error Authorizing with Google" 
                 message:[error localizedDescription] 
                 delegate:nil 
               cancelButtonTitle:@"OK" 
               otherButtonTitles:nil]; 
     [alert show]; 
    } else { 

     UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Success Authorizing with Google" 
                 message:[error localizedDescription] 
                 delegate:nil 
               cancelButtonTitle:@"OK" 
               otherButtonTitles:nil]; 
     [alert show]; 
    } 
    NSURL *url = [NSURL URLWithString:@"https://www.googleapis.com/adsense/v1.1/reports"]; 

    NSData *jsonData = [NSData dataWithContentsOfURL:url]; 


    if(jsonData != nil) 
    { 
     NSError *error = nil; 
     id result = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; 
     if (error == nil) 
     NSLog(@"%@", result); 
    } 
} 

@end 

Я вход в Google штраф на приложении и получить всплывающее окно говоря успех, но и как что происходит мой nslog показывает это

2013-06-14 19:28:51.681 Simple-OAuth2[9253:c07] finished 
2013-06-14 19:28:51.681 Simple-OAuth2[9253:c07] auth access token: ya29.xxxxxxxxxx 
2013-06-14 19:28:51.912 Simple-OAuth2[9253:c07] { 
    error =  { 
     code = 401; 
     errors =   (
         { 
       domain = global; 
       location = Authorization; 
       locationType = header; 
       message = "Login Required"; 
       reason = required; 
      } 
     ); 
     message = "Login Required"; 
    }; 
} 

Как я могу быть в системе?

ответ

Смежные вопросы