我用ADALiOS做了很多样品。正如你所知,ADALiOS不断地改变它的实现。因为我是swift的初学者,所以我不知道如何从网上制作样本。
我试过adal 3.0的一个版本(预发行版)。
如您所见,下面的代码是从下载的一个示例中复制的。每个示例都有编译器错误,例如authContext.acquireToken()或acquireTokenwithResource()方法中的“缺少参数标签策略…”或“无法转换ADAuthenticationResult…”,而不管其adal版本如何。有人能帮我吗?
错误消息是关于completionBlock:。。。。
谢谢
authContext.acquireToken(withScopes: [Any](), additionalScopes: [Any](), clientId: clientId, redirectUri: redirectURL, identifier: id!, promptBehavior: prompt, extraQueryParameters: "", completionBlock: <#T##ADAuthenticationCallback!##ADAuthenticationCallback!##(ADAuthenticationResult?) -> Void#>){
if result.status.value != AD_SUCCEEDED.value {
// Failed, return error description
completionHandler(false, result.error.description)
}
else {
// Succeeded, return the acess token
var token = result.accessToken
// Initialize the dependency resolver with the logged on context.
// The dependency resolver is passed to the Outlook library.
self.dependencyResolver = ADALDependencyResolver(context: authContext, resourceId: self.outlookResource, clientId: self.clientId, redirectUri: self.redirectURL)
completionHandler(true, token)
}
}
最佳答案
我刚刚使用了adal 3.0(预发行版)。在查看示例时,ADALAPI似乎已更改。我找不到acquireTokenwithResource(),因此使用:
acquireToken(其作用域:additionalScopes:clientId:redirectUri:identifier:,promptBehavior:)
我想我最大的问题是没有在这里注册本地应用:https://apps.dev.microsoft.com
在我使用apps.dev.microsoft中的clientId和redirectURI并包含正确的作用域之后,我就能够进行身份验证并获取accessToken。
我的acquireToken是这样的:
func acquireAuthToken(completion: ((AuthenticationResult) -> Void)?) {
let identity = ADUserIdentifier(id: "Default email address", type: ADUserIdentifierType(rawValue:1))
self.context.acquireToken(withScopes: ["User.Read"], additionalScopes: nil, clientId: AppData.sharedInstance?.clientId, redirectUri: URL(string: (AppData.sharedInstance?.redirectUriString)!), identifier: identity, promptBehavior: AD_PROMPT_AUTO) {
(result) in
if let handler = completion {
if result!.status == AD_SUCCEEDED {
self.accessToken = result!.token
handler(AuthenticationResult.Success)
}
else {
handler(AuthenticationResult.Failure(result!.error))
}
}
}
}
上下文只是一个身份验证上下文(权威:ppData.sharedInstance?.authority,.authority,错误:&error)
高温高压