2017-08-30 4 views
1

Azure-Samples/active-directory-b2c-ios-swift-native-msalアプリケーションを使用してAzure B2Cテナントの機能をデモしました。リフレッシュ・トークンの機能の外ですべてを動作させました。リフレッシュトークンが確実に提供されるように、「offline_access」スコープを追加しました。Azure B2Cリフレッシュトークン機能がiOS Swiftサンプルアプリケーションで動作しない

私が得た最初のエラー:

User Nil error

let application = try MSALPublicClientApplication.init(clientId: kClientID, authority: kAuthority) 
let thisUser = try self.getUserByPolicy(withUsers: application.users(), forPolicy: kSignupOrSigninPolicy) 

application.acquireTokenSilent(forScopes: kScopes, user: thisUser) { (result, error) in 
if error == nil { 
self.accessToken = (result?.accessToken)! 
self.loggingText.text = "Refreshing token silently" 
self.loggingText.text = "Refreshed Access token is \(self.accessToken)" 

      } 

をだから私は、最初の承認からMSALユーザーを保存しようとしたとAcquireTokenSilent方法にそれを渡されました。

私はこのエラーを取得する:

Failed to find any access token error

let application = try MSALPublicClientApplication.init(clientId: kClientID, authority: kAuthority) 
let thisUser = userFromAuth 

    application.acquireTokenSilent(forScopes: kScopes, user: thisUser) { (result, error) in 
      if error == nil { 
       self.accessToken = (result?.accessToken)! 
       self.loggingText.text = "Refreshing token silently" 
       self.loggingText.text = "Refreshed Access token is \(self.accessToken)" 

      } 

は最後に、私はAcquireTokenSilentに新規アカウント/サインイン(初期認証コール)で使用される権限/ポリシーを追加しようとした私は、このエラーを取得します:

「この引数に一致するトークンはキャッシュにありません」と表示されます。私は、Androidサンプルアプリでリフレッシュトークンの機能をテストしていると私は、私は問題がどこかであるとは思わないので、成功したトークンをリフレッシュすることができる午前

let application = try MSALPublicClientApplication.init(clientId: kClientID, authority: kAuthority) 
let thisUser = userFromAuth 

    application.acquireTokenSilent(forScopes: kScopes, user: thisUser, authority: kAuthority) { (result, error) in 
      if error == nil { 
       self.accessToken = (result?.accessToken)! 
       self.loggingText.text = "Refreshing token silently" 
       self.loggingText.text = "Refreshed Access token is \(self.accessToken)" 

      }  

(私は3番目のリンクを投稿できないだろう)私たちのB2C。私はまた、MSALライブラリが、AndroidとObj-Cの例で使用されているAppAuthライブラリとは異なる方法でリフレッシュを処理するので、紛失しているかどうかわかりません。

何が間違っている可能性についての洞察は素晴らしいでしょう!

+0

スクリーンショットを追加すると、[3番目のエラースクリーンショット](http://imgur.com/YgNluPc) –

+0

答えを返信することはできますか?この質問に答えられて、私はそれをupvoteすることができます) – Parakh

答えて

0

これはうまくいきました。 useridentifierはポリシー名がすべて小文字(例:56d56ec5-96a9-4c23-9717-4ae5d86f967c-b2c_1_policy)で返されるため、ポリシーに大文字がある場合はユーザーとトークンを見つけることができません。

私はgetUserByPolicy方法でforPolicyの文字列の末尾に)(.lowercased追加することによってそれを修正:

for user in withUsers { 
    if (user.userIdentifier().components(separatedBy: ".")[0].hasSuffix(forPolicy.lowercased())) { 
     return user 
    }  
} 

はまた、Xcodeの(8.3.3)の最新バージョンであることを必ずしなければなりませんでした。

関連する問題