2015-01-21 89 views
0

因此,我最近已將新的Office365 Rest API與PHP集成,並使其成功與Contacts API配合工作。oAuth2強制重新登錄[Office365 Rest Api]

一旦身份驗證完成,系統將生成請求url並將用戶重定向,該操作完全正常,但如果您返回到腳本,它將自動再次登錄您的整個過程,因爲Office365不會強制重新授權。

我們的腳本目前允許多個用戶將他們的帳戶與我們的系統同步,但是這隻允許一個用戶在每個瀏覽器會話中執行此操作。

 require_once('./src/Office365_Client.php'); 
    $client = new Office365_Client(); 
    $forward_url = $client->createAuthUrl(); 
    if (isset($_GET['code'])) { 
     $code = $_GET['code']; 
     $client->setCode($code); 
     $responseObj = $client->getTokens(); 


     $access_token = $client->getAccessToken(); 
     $refresh_token = $client->getRefreshToken(); 

     $_SESSION['access_token'] = $access_token; 
     $_SESSION['instance_url'] = $instance_url; 

     $icustomer = (isset($_SESSION['icustomer'])) ? $_SESSION['icustomer'] : false; 
     header("location: " . $_SESSION['redirUrl'] . "?crm=office365&access_token=$access_token&refresh_token=$refresh_token"); 
     //die(); 
     ////////////////////////////////////////////////////////// 
     // LOAD CONTACTS 
     ///////////////////////////////////////////////////////// 
     //$client->getContactsFolders(); 
     /////////////////////////////////////////////////// 
    } else { 
     header("location: $forward_url"); 
    } 

理想的情況下它應該工作如下:

用戶訪問我們的網站 - >我們生成驗證網址和用戶被重定向到登錄頁面Office365(然後,他們將到autheticate如果之前沒有這樣做) - >一旦完成,這將返回到我們的選擇屏幕,他們的代碼準備好創建他們的訪問令牌。如果用戶希望添加不同的Office365帳戶,則他們應該能夠在不使用其他瀏覽器的情況下再次執行該過程。

+0

你找到這個問題的任何妥善的解決辦法? – par 2016-02-06 10:13:50

回答

1

添加prompt=login的授權請求,所以:

header("location: $forward_url" . "&prompt=login");