我已经建立了网站,因此我可以使用Oauth进行单点登录并添加访问权限,以便将在我的网站上创建的日历条目发布到用户的Outlook日历中。
一切都适用于我的开发环境,但是当我进入生产环境中的日历页面时,会抛出此错误:
https://graph.microsoft.com/v1.0/me/calendars
resulted in a
401未经授权的响应:{“错误”:{“代码”:“ InvalidAuthenticationToken”,“消息”:“访问令牌验证失败。”
我正在使用从oAuth获得的日历相同的令牌。这不是正确的方法吗?如果没有的话,我该如何正确地做到这一点,为什么会起作用?
这是我的oauth页面的一部分
// Get an access token using the authorization code grant
$accessToken = $provider->getAccessToken('authorization_code', [
'code' => $_GET['code']
]);
$_SESSION['refresh_token'] =$accessToken->getRefreshToken();
$graph = new Graph();
$graph->setAccessToken($accessToken);
//the sesion token for calendars expires faster than our token to stay in connect, so if it expires have the user sign back in
try {
$user = $graph->createRequest("GET", "/me/calendars")
->execute();
} catch (Exception $e) { //FAILS HERE
// sessionTimeout(); exit;
var_dump($e);
}
编辑
将令牌扔回到JWT中,我发现在开发过程中,令牌具有包括我所拥有的范围在内的所有信息。但是在生产中,令牌缺少“ scp”字段。我不知道我在做什么错。
编辑2 我以为也许我需要刷新令牌,但这仍然给我同样的错误。