我完成了PHP教程https://dev.outlook.com/RestGettingStarted/Tutorial/php 完成了整个Rest API文档https://msdn.microsoft.com/en-us/office/office365/api/contacts-rest-operations 让一切正常,但60分钟后连接丢失。 我需要刷新令牌来获取新的访问令牌。但我从来没有收到刷新令牌,也无法得到它。 通过互联网查看一般OAuth文档和本论坛的问题。
尝试了所有类型的解决方案,没有任何作用。
$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数据中没有刷新令牌。
似乎无法获得刷新令牌。
有没有人成功这样做过?怎么样?
答案 0 :(得分:1)
使用沙箱https://oauthplay.azurewebsites.net我发现了答案
在请求中使用
范围= +的OpenID + offline_access
所以将offline_access添加到您的范围,refresh_token就是发送
答案 1 :(得分: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();