2012-06-19 101 views
1

我最近在Objective C中进行了开发,并试图使用Microsoft Translator API。到目前为止,如果我使用appID,它就可以工作,但现在不推荐使用该方法。我试图用OAuth等方式学习它。微软翻译API - iOS

任何人都可以给我一个示例(显然没有clientID和client_secretcode,我都有)来获取access_token?

编辑:似乎我还不够清楚,所以有完整的故事。

我一直在尝试使用Microsoft Translator API。在问题发生的时候,我发现了一个使用AppID的旧实现(现在已弃用)。 MS翻译API正在使用OAuth进行身份验证,并且公平,当时我不知道如何处理它。现在,我做了,我发布了我的代码,以便人们可以得到它,如果他们得到同样的问题。

希望这是更清楚现在:)

回答

1

这是样品,我可以了:

-(IBAction)getToken:(id)sender { 
NSString *clientSecret = (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, 
                         (CFStringRef)CLIENT_SECRETCODE, 
                         NULL, 
                         (CFStringRef) @"!*'();:@&=+$,/?%#[]", 
                         kCFStringEncodingUTF8); 
NSMutableString* authHeader = [NSMutableString stringWithString:@"client_id="]; 
[authHeader appendString:CLIENT_ID]; 
[authHeader appendString:@"&client_secret="]; 
[authHeader appendString:clientSecret]; 
[authHeader appendString:@"&grant_type=client_credentials&scope=http://api.microsofttranslator.com"]; 



NSMutableURLRequest *request =[NSMutableURLRequest 
           requestWithURL:[NSURL URLWithString:TOKEN_STRING] 
           cachePolicy:NSURLRequestUseProtocolCachePolicy 
           timeoutInterval:60.0]; 

[request setHTTPMethod:@"POST"]; 
[request addValue:@"application/x-www-form-urlencoded" 
     forHTTPHeaderField:@"Content-Type"]; 

const char *bytes = [authHeader UTF8String]; 
[request setHTTPBody:[NSData dataWithBytes:bytes length:strlen(bytes)]]; 

NSURLResponse* response; 
NSError* error; 

NSData* data = [NSURLConnection sendSynchronousRequest: request returningResponse: &response error: &error]; 

if (data != nil) { 
    NSString* contents = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; 
    NSString *formattedContents = [contents stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
} 

即使它改编为微软翻译,它不应该是很难适应其用于其他服务。在这里,令牌不被解析,代码很粗糙,而且由于我使用的是自动引用计数,所以应该注意,在配置之后可能需要autorelease。

+0

以上代码中的TOKEN_STRING是什么 –

+0

@Abhilash Reddy kallepu在上面的代码中,TOKEN_STRING是Microsoft给出的链接获取认证令牌。看到这个[来自微软的例子](http://msdn.microsoft.com/en-us/library/hh454950.aspx),即使它是C#,这也很简单。 – Kadelka

+0

只需使用[FGTranslator](https://github.com/gpolak/FGTranslator)完成繁重的工作。 – George