2015-01-21 75 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");