ios - 微软翻译 API-iOS

标签 ios oauth-2.0 microsoft-translator

<分区>

我最近开始使用 Objective C 进行开发,并且正在尝试使用 Microsoft Translator API。到目前为止,如果我使用 appID,它就可以工作,但现在不推荐使用该方法。我正在尝试使用 OAuth 等以正确的方式学习它。

谁能给我一个样本(显然没有 clientID 和 client_secretcode,我都有)来获取 access_token?

编辑:看来我还不够清楚,所以这里有完整的故事。

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

希望现在更清楚了:)

最佳答案

这是我可以使用的示例:

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

尽管它适用于 Microsoft Translation,但适用于其他服务应该不难。这里没有解析token,代码比较粗糙,由于我使用的是自动引用计数,需要注意的是,根据你的配置,可能需要autorelease。

关于ios - 微软翻译 API-iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11103371/

相关文章:

oauth-2.0 - LinkedIn OAuth 2.0 重定向 URL

php - Symfony2 OAuth2 提供程序错误 UserRepository

ios - 从一个函数引用另一个函数中的常量

iphone - 在客户端上使用代理对象时在 iOS 上调用 WCF 服务

ios - 有没有办法从 Cocoapods 获取所有许可证 header

java - Microsoft翻译API,Translate.execute()方法在android中不调用

ios - 如何在iOS13的iPad上以iPhone风格呈现actionSheet?

python - 我将如何对这样的代码进行单元测试?

Swift Realm 'RLMException' ,原因 : 'Index 0 is out of bounds (must be less than 0)