+ (void)getAccessTokenWithCompletion:(callBackResponse)completion
{
NSString *BaseURI = @"https://api.soundcloud.com";
NSString *OAuth2TokenURI = @"/oauth2/token";
NSString *requestURL = [BaseURI stringByAppendingString:OAuth2TokenURI];
SCRequestResponseHandler handler;
handler = ^(NSURLResponse *response, NSData *data, NSError *error) {
NSError *jsonError = nil;
NSJSONSerialization *jsonResponse = [NSJSONSerialization
JSONObjectWithData:data
options:0
error:&jsonError];
if (!jsonError)
{
NSLog(@"output of getToken\n%@",jsonResponse);
NSDictionary* serverResponse = (NSDictionary*)jsonResponse;
if ([serverResponse objectForKey:@"access_token"])
{
accessToken = [serverResponse objectForKey:@"access_token"];
[[NSUserDefaults standardUserDefaults] setObject:accessToken forKey:SC_ACCESS_TOKEN_KEY];
NSDictionary *dict=[[NSDictionary alloc]initWithObjectsAndKeys:accessToken,SC_ACCESS_TOKEN_KEY,nil];
completion(dict);
}
else
completion(nil);
}
};
NSMutableDictionary *parameter=[[NSMutableDictionary alloc]init];
[parameter setObject:@"password" forKey:@"grant_type"];
[parameter setObject:CLIENT_ID forKey:@"client_id"];
[parameter setObject:CLIENT_SECRET forKey:@"client_secret"];
[parameter setObject:CLIENT_USERNAME forKey:@"username"];
[parameter setObject:CLIENT_PASSWORD forKey:@"password"];
[parameter setObject:@"non-expiring" forKey:@"scope"];
[SCRequest performMethod:SCRequestMethodPOST
onResource:[NSURL URLWithString:requestURL]
usingParameters:parameter
withAccount:nil
sendingProgressHandler:nil
responseHandler:handler];
}
This gives me non-expiring token, and advantage is I am using soundcloud sdk, that makes it litle easy