私はAzure ADテナントを使用してアンドロイド用のAppAuthテストアプリを構築しました。今私はiOS(Swift 4)と同じことを試みており、アクセストークンのアクセスコードを交換しようとしているときに失敗しています。エラーは返されず、idTokenは取得されますが、accessTokenまたはrefreshTokenは返されません。その他のエラーはありません。何が起こっているか分からない。アクセストークンがなければグラフを照会できません。私はAzure AD v2を使用しています。私のコードの一部です:AppAuth iOSトークンエクスチェンジの問題Azure AD
func appAuthAuthorize(authConfig: AuthConfig) {
let serviceConfiguration = OIDServiceConfiguration(
authorizationEndpoint: NSURL(string: authConfig.authEndPoint)! as URL,
tokenEndpoint: NSURL(string: authConfig.tokenEndPoint)! as URL)
let request = OIDAuthorizationRequest(configuration: serviceConfiguration, clientId: authConfig.clientId, scopes: [OIDScopeOpenID, OIDScopeProfile], redirectURL: NSURL(string: authConfig.redirectUri)! as URL, responseType: OIDResponseTypeCode, additionalParameters: nil)
doAppAuthAuthorization(authRequest: request)
}
func doAppAuthAuthorization(authRequest: OIDAuthorizationRequest) {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.currentAuthorizationFlow = OIDAuthorizationService.present(authRequest, presenting: self, callback: {
(authorizationResponse, error) in
if (authorizationResponse != nil) {
self.authState = OIDAuthState(authorizationResponse: authorizationResponse!)
self.logMessage(message: "Got authorization code: \(String(describing: self.authState?.lastAuthorizationResponse.authorizationCode))")
self.doTokenRequest()
} else {
self.authState = nil
self.logMessage(message: "Authorization error: \(String(describing: error?.localizedDescription))")
}
})
}
func doTokenRequest() {
let tokenExchangeRequest = authState?.lastAuthorizationResponse.tokenExchangeRequest()
OIDAuthorizationService.perform(tokenExchangeRequest!) {
tokenResponse, error in
if tokenResponse == nil{
self.logMessage(message: "Token exchange error: \(error!.localizedDescription)")
} else {
self.authState?.update(with: tokenResponse!, error: error)
self.saveState()
self.logMessage(message: "Received token response with accesToken: \(tokenResponse!.idToken!)")
self.logMessage(message: "Received token response with accesToken: \(tokenResponse!.refreshToken!)")
self.logMessage(message: "Received token response with accesToken: \(tokenResponse!.accessToken!)")
self.retrieveUserProfile()
}
self.authState?.update(with: tokenResponse, error: error)
}
}
あなたはPowerShellを使用してグラフAPIにアプリケーションを登録したことがありますか?私はv1.6でこれを行う必要がありますが、私はv2でそれが必要であるかどうかはわかりません。 – Pytry
する必要はありません。私のAndroidアプリとMSALを使用したiOSの例は正常に動作します。その唯一のAppAuthは正しく動作しません。 – Igor
ああ、大丈夫です。 OpenIdConnectの快適なフローを提供できるかもしれませんが、私はMSALを一度も使用していません。ごめんなさい。 – Pytry