我需要注册我的应用才能使用Outlook Calendar API。我在这里创建了应用:https://apps.dev.microsoft.com。我有应用程序ID和重定向URI。然后我使用以下方法获取令牌:
[self.context acquireTokenWithResource:resourceID
clientId:clientID
redirectUri:redirectURI
completionBlock:^(ADAuthenticationResult *result) {
if (result.status !=AD_SUCCEEDED){
completion(result.error);
}
else{
self.accessToken = result.accessToken;
self.refreshToken = result.tokenCacheStoreItem.refreshToken;
self.familyName = result.tokenCacheStoreItem.userInformation.familyName;
self.givenName = result.tokenCacheStoreItem.userInformation.givenName;
self.userID = result.tokenCacheStoreItem.userInformation.userId;
completion(nil);
}
}];
得到了这个错误:
Error with code: 15 Domain: ADAuthenticationErrorDomain ProtocolCode:unauthorized_client Details:AADSTS70001: Application '***' is not supported for this API version.
Trace ID: c5286e11-9fa9-4ddd-96a4-a29ddd6b416c
Correlation ID: c608d556-729b-4cad-80be-24d85f5558d4
Timestamp: 2016-03-14 13:05:11Z. Inner error details: Error Domain=ADAuthenticationErrorDomain Code=15 "The operation couldn’t be completed. (ADAuthenticationErrorDomain error 15.)"
请帮我正确注册我的应用
更新: @dstrockis帮助解决了这个问题。但现在我还有一个: 使用https://cocoapods.org/pods/ADALiOS方法
[authContext acquireTokenWithResource:resourceId
clientId:clientId
redirectUri:redirectUri
completionBlock:^(ADAuthenticationResult *result) {
if (AD_SUCCEEDED != result.status){
// display error on the screen
[self showError:result.error.errorDetails];
}
else{
completionBlock(result.accessToken);
}
}];
但ADALiOS库3.0.0-pre3不包含此方法。我试过用
- (void)acquireTokenWithScopes:(NSArray*)scopes
additionalScopes:(NSArray*)additionalScopes
clientId:(NSString*)clientId
redirectUri:(NSURL*)redirectUri
identifier:(ADUserIdentifier*)identifier
promptBehavior:(ADPromptBehavior)promptBehavior
completionBlock:(ADAuthenticationCallback)completionBlock;
我遇到以下错误:“代码出错:17域:ADAuthenticationErrorDomain ProtocolCode:(null)详细信息:应用程序没有当前的ViewController。内部错误详细信息:错误域= ADAuthenticationErrorDomain代码= 17”操作无法运行完成。 (ADAuthenticationErrorDomain错误17。)“”。
答案 0 :(得分:1)
您使用的是错误版本的ADALiOS库。要使用v2.0端点(以及在apps.dev.microsoft.com上注册的应用程序),您需要使用ADALiOS库3.0.0-pre3的预览版本。见https://cocoapods.org/pods/ADALiOS。有关v2.0端点的更多信息,请访问aka.ms/aaddevv2。
答案 1 :(得分:0)
有关更新的问题:
如果ADAL找不到您的根视图控制器,您可能需要在调用 acquireTokenWithScopes 之前指定父视图控制器。
,例如,设置
context.parentController = self;
在调用 acquireTokenWithScopes 之前。