2016-03-02 103 views
0

我完成了PHP教程https://dev.outlook.com/RestGettingStarted/Tutorial/php 完成整個REST API文檔https://msdn.microsoft.com/en-us/office/office365/api/contacts-rest-operations 擁有的一切工作,但60分鐘後連接丟失。 我需要刷新令牌來獲取新的訪問令牌。但我從來沒有收到刷新令牌,無法得到它。 查看互聯網上的一般OAuth文檔和本論壇的問題。獲取刷新令牌展望REST API的OAuth PHP

嘗試過所有類型的解決方案,沒有任何工作。

$token_request_data = array(
     "grant_type" => "authorization_code", 
     'always_issue_new_refresh_token' => true, 
     'refresh_token_lifetime'   => 2419200, 
     'approval_prompt'=>'force', 
     'access_type'=>'offline', 
     'prompt'=>'consent', 
     'approval_prompt'=>'force', 
     "code" => $authCode, 
     "redirect_uri" => self::$redirectUri, 
     "scope" => implode(" ", self::$scopes), 
     "client_id" => self::$clientId, 
     "client_secret" => self::$clientSecret 
    ); 

它被告知刷新標記只在首次註冊應用程序後發送。

因此,我創建了一個完整的新應用程序並登錄,但在回覆的JSON數據中沒有刷新標記。

看起來不可能獲得刷新令牌。

有沒有人成功做到這一點?怎麼樣?

回答

1

隨着沙箱https://oauthplay.azurewebsites.net我discoverd答案

在請求大公使用

範圍=的OpenID + offline_access +

所以加offline_access到您的範圍和refresh_token是發送

0

謝謝您!我無法相信這個可怕的文件。這是我如何建立我的網址。我需要能夠通過用戶發送電子郵件。仍在努力嘗試獲取用戶的電子郵件...

return USER_OAUTH2_AUTHORIZE_URL 
    + "?client_id=" + config.getClientId() 
    + "&redirect_uri=" + getOutlookLoginRedirect(request) 
    + "&response_type=code" 
    + "&scope=https%3A%2F%2Foutlook.office.com%2Fmail.send offline_access openid" 
    + "&state=" + crypto.generateSignedToken();