http://oauth.vk.com/authorize? client_id=APP_ID& scope=SETTINGS& redirect_uri=REDIRECT_URI& display=DISPLAY& response_type=token
-(IBAction)vkontakteButton:(id)sender { // webView authWebView = [[UIWebView alloc] initWithFrame:CGRectMake(10, 20, 300, 400)]; authWebView.tag = 1024; authWebView.delegate = self; UIButton* closeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [self.view addSubview:authWebView]; [authWebView loadRequest: [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://oauth.vk.com/authorize?client_id=3038779&scope=wall,offline&redirect_uri=oauth.vk.com/blank.html&display=touch&response_type=token"]]]; // [self.view.window makeKeyAndVisible]; // closeButton.frame = CGRectMake(5, 15, 20, 20); closeButton.tag = 1025; [closeButton addTarget:self action:@selector(closeWebView:) forControlEvents:UIControlEventTouchUpInside]; [closeButton setTitle:@"x" forState:UIControlStateNormal]; [self.view addSubview:closeButton]; } -(void) closeWebView { [[self.view viewWithTag:1024] removeFromSuperview]; [[self.view viewWithTag:1025] removeFromSuperview]; } -(IBAction)closeWebViewButton:(id)sender { [self closeWebView]; }
http://oauth.vk.com/authorize?client_id=APP_ID&scope=wall,offline&redirect_uri=oauth.vk.com/blank.html&display=touch&response_type=token
-(void) webViewDidFinishLoad:(UIWebView *)webView { // - NSMutableDictionary* user = [[NSMutableDictionary alloc] init]; // NSString *currentURL = webView.request.URL.absoluteString; NSRange textRange =[[currentURL lowercaseString] rangeOfString:[@"access_token" lowercaseString]]; //, if(textRange.location != NSNotFound){ //, , NSArray* data = [currentURL componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"=&"]]; [user setObject:[data objectAtIndex:1] forKey:@"access_token"]; [user setObject:[data objectAtIndex:3] forKey:@"expires_in"]; [user setObject:[data objectAtIndex:5] forKey:@"user_id"]; [self closeWebView]; // [[VkontakteDelegate sharedInstance] loginWithParams:user]; } else { // ... textRange =[[currentURL lowercaseString] rangeOfString:[@"access_denied" lowercaseString]]; if (textRange.location != NSNotFound) { UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Ooops! something gonna wrong..." message:@"Check your internet connection and try again!" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil]; [alert show]; [self closeWebView]; } } }
#import <Foundation/Foundation.h> @interface VkontakteDelegate : NSObject @property NSString *username, *realName, *ID, *link, *email, *access_token; @property UIImage* photo; + (id)sharedInstance; -(void) loginWithParams: (NSMutableDictionary*) params; -(void) postToWall; @end
#import "VkontakteDelegate.h" @implementation VkontakteDelegate @synthesize username, realName, ID, photo, access_token, email, link; + (id)sharedInstance { static VkontakteDelegate *__sharedInstance; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ __sharedInstance = [[VkontakteDelegate alloc]init]; }); return __sharedInstance; } - (id) init { access_token = [[NSUserDefaults standardUserDefaults] objectForKey:@"vk_token"]; ID = [[NSUserDefaults standardUserDefaults] objectForKey:@"vk_id"]; return self; } -(void) loginWithParams:(NSMutableDictionary *)params { ID = [params objectForKey:@"user_id"]; access_token = [params objectForKey:@"access_token"]; //, ! [[NSUserDefaults standardUserDefaults] setValue:access_token forKey:@"vk_token"]; [[NSUserDefaults standardUserDefaults] setValue:ID forKey:@"vk_id"]; [[NSUserDefaults standardUserDefaults] synchronize]; // NSString *urlString = [NSString stringWithFormat:@"https://api.vk.com/method/users.get?uid=%@&access_token=%@", ID, access_token] ; NSURL *url = [NSURL URLWithString:urlString]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; NSHTTPURLResponse *response = nil; NSError *error = nil; NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; // - , ! // . // , ... NSArray* userData = [responseString componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"\":{},[]"]]; realName = [userData objectAtIndex:14]; realName = [realName stringByAppendingString:@" "]; realName = [realName stringByAppendingString:[userData objectAtIndex:20]]; // , [[NSUserDefaults standardUserDefaults] setValue:@"vkontakte" forKey:@"SignedUpWith"]; [[NSUserDefaults standardUserDefaults] setValue:realName forKey:@"RealUsername"]; [[NSUserDefaults standardUserDefaults] synchronize]; } -(void) postToWall { // - ( "+") NSString* message = @"vkontakte+wall+posting"; NSString *urlString = [NSString stringWithFormat:@"https://api.vk.com/method/wall.post?uid=%@&message=%@&attachments=http://google.com&access_token=%@", ID, message,access_token] ; NSURL *url = [NSURL URLWithString:urlString]; //, , NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; NSHTTPURLResponse *response = nil; NSError *error = nil; NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; }
NSError *jsonParsingError = nil; NSMutableDictionary *userInfo = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&jsonParsingError]; userInfo = [userInfo objectForKey:@"response"]; realName = [userInfo objectForKey:@"first_name"]; realName = [realName stringByAppendingFormat:[userInfo objectForKey:@"last_name"]];
https://api.vk.com/method/users.get?uid=%@&access_token=%@
https://api.vk.com/method/wall.post?uid=%@&message=%@&attachments=http://google.com&access_token=%@
Source: https://habr.com/ru/post/148207/