2017-09-06 30 views
0

我正在尋找here刷新標記無法找到刷新標記與Microsoft Graph

我有這樣的代碼來獲得訪問令牌:

if(bPromptUser) 
{ 
    _AuthResult = await PublicClientApp.AcquireTokenAsync(_scopes); //Opens Microsoft Login Screen 

    using (RegistryKey key = Registry.CurrentUser.CreateSubKey(keyName)) 
    { 
     key.OpenSubKey(keyName, true); 
     key.SetValue("Status", _AuthResult.AccessToken); 
     key.SetValue("Expire", _AuthResult.ExpiresOn.ToLocalTime().ToString()); 
     key.Close(); 

     token = _AuthResult.AccessToken; 
    } 

    // Append the access token to the request. 
    requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", token); 
} 

但我_AuthResult實際上並沒有在列表中RefreskToken。這是因爲我使用v1的Microsoft Graph

更新

根據文檔的答案建議的範圍是在默認情況下?

enter image description here

回答

0

微軟TokenCacheHelper提供的示例代碼。

將其添加到您的項目並提供它的一個實例。然後,設置路徑。像這樣:

TokenCacheHelper.CacheFilePath = Program.Options.TokenCachePath; 
PublicClientApp = new PublicClientApplication(_AppID, "https://login.microsoftonline.com/common", TokenCacheHelper.GetUserCache()); 

這就是你需要做的。緩存文件包含所有令牌詳細信息,包括刷新令牌。

更多細節在談話here。在部分:

至於幫助您實現令牌緩存,存儲令牌緩存的內容, 您需要:

  1. 複製TokenCacheHelper從這裏到您的項目。
  2. 如果你真的想保存緩存到註冊表中的內容, 改變執行:
    • AfterAccessNotification寫入 註冊表而不是一個文件this line
    • BeforeAccessNotification閱讀 fromthe註冊表如圖所示 PublicClientApplication你的,而不是一個文件this line
  3. 建設這裏(通過你 通過調用TokenCacheHelper.GetUserCache()得到緩存: https://github.com/Azure-Samples/active-directory-dotnet-desktop-msgraph-v2/blob/master/active-directory-wpf-msgraph-v2/App.xaml.cs#L19

    clientApp = new PublicClientApplication(ClientId, "https://login.microsoftonline.com/common", TokenCacheHelper.GetUserCache());