2013-05-02 134 views
0

我正在关注this link以获取访问令牌,但有些漏洞在下面的代码中,特别是在网址和内容中。ios - 如何获取访问令牌?

-(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]; 
    } 
    } 

当登录到Gmail或Yahoo,下面的代码将被解雇,然后检查URL,但在这里(如果条件不满足)。如果你能不能够明白,我想要问。请参阅上面给出的链接。

- (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; 

    } 

任何想法?提前致谢。

回答

0

你有成功的设备令牌.....

- (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 
   } 
} 
+0

感谢您的回复,我们为什么需要这个设备我要去的路吗? – 2013-05-02 07:27:25

+0

你得到并享受 – hitesh 2013-05-02 07:32:46

+0

你的代码加载在Safari中的内容,它是如此复杂的获取令牌,我试图加载在UIWebview – 2013-05-02 07:35:40