简体   繁体   中英

ios - How to get access token?

I'm following this link to get access token,but some leaking in below code particularly in url and content.

 -(void)connectionDidFinishLoading:(NSURLConnection *)connection

 {

  if(_data)
  {
    NSString* content = [[NSString alloc] initWithData:_data
                                              encoding:NSUTF8StringEncoding];

    [_data release];
    _data = nil;

    NSString *jsString = @"<script type='text/javascript'>\
    window.external =\
    {\
    'Notify': function(s) { document.location = 'acs://settoken?token=' + s; },\
    'notify': function(s) { document.location = 'acs://settoken?token=' + s; }\
    }\
    </script>";

   //Here appending the above javascript with content

    content = [jsString stringByAppendingString:content];

    NSURL *url = [[NSURL alloc] initWithString:@"https://converse.accesscontrol"];

    [webView loadHTMLString:content baseURL:url];
   }
   }

When logged into Gmail or Yahoo,the below code will be fired then check the url,but here (if condition fails).If you couldn't able to understand,what I'm trying to ask. Please see the above given link.

 - (BOOL)webView:(UIWebView *)webView
  shouldStartLoadWithRequest:(NSURLRequest *)request
 navigationType:(UIWebViewNavigationType)navigationType

{

_url = [[NSURL alloc] initWithString:@"https://converse.accesscontrol.windows"];

  if(_url)
  {

    if([_url isEqual:[request URL]])
    {
        return YES;
    }

    [_url release];
  }

  _url = [[request URL] retain];
   NSString* scheme = [_url scheme];

  if([scheme isEqualToString:@"acs"])
   {
    // parse the JSON URL parameter into a dictionary
    NSDictionary* pairs = [self parsePairs:[_url absoluteString]];
    if(pairs)
    {
        WACloudAccessToken* accessToken;
        accessToken = [[WACloudAccessToken alloc] initWithDictionary:pairs];
        [WACloudAccessControlClient setToken:accessToken];

        [self dismissModalViewControllerAnimated:YES];
    }

    return NO;
   }

   [NSURLConnection connectionWithRequest:request delegate:self];

   return NO;

  }

Any ideas? Thanks in advance.

you got Successfully Device token.....

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    
    
  
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge)];
   [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    
    self.strToken = [[[[deviceToken description]
                       stringByReplacingOccurrencesOfString: @"<" withString: @""]
                      stringByReplacingOccurrencesOfString: @">" withString: @""]
                     stringByReplacingOccurrencesOfString: @" " withString: @""];
    
    NSLog(@"%@",deviceToken);
}


- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    NSString *str = [NSString stringWithFormat: @"Error: %@", error];
   
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    
    NSLog(@"user info  %@",userInfo);
    UIApplicationState state = [application applicationState];
    if (state == UIApplicationStateActive) {
        NSString *cancelTitle = @"OK";
        //NSString *showTitle = @"Show";
        NSString *message = [[userInfo valueForKey:@"aps"] valueForKey:@"alert"];
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil
                                                            message:message
                                                           delegate:self
                                                  cancelButtonTitle:cancelTitle
                                                  otherButtonTitles: nil];
        [alertView show];
        [alertView release];
        
        
    } 
   else {
        //Do stuff that you would do if the application was not active
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM