我想实现一些工作流,他们应该向 Microsoft 待办事项应用程序添加一些任务。
他们有一个休息 api。我尝试访问 oauth。但是有错误的返回网址。而且我不想拥有一个浏览器应用程序,它应该只是一个在后台运行的 php 脚本。
我试过这个:
$url = oAuthService::getLoginUrl("http://localhost/microsoftToDoTest/auth.php");
header("location:".$url);
class oAuthService {
private static $clientId = "";
private static $clientSecret = "";
private static $authority = "https://login.microsoftonline.com";
private static $authorizeUrl = '/common/oauth2/authorize?client_id=%1$s&redirect_uri=%2$s&response_type=code';
private static $tokenUrl = "/common/oauth2/token";
public static function getLoginUrl($redirectUri) {
$loginUrl = self::$authority.sprintf(self::$authorizeUrl, self::$clientId, urlencode($redirectUri));
error_log("Generated login URL: ".$loginUrl);
return $loginUrl;
}
}
在微软服务上使用 php 授权的正确方法是什么?
提前致谢
查看您的代码和文档,我认为您需要请求令牌才能创建有效的会话。然后通过带有会话 ID 的 cookie 中的 url 提供该令牌。
Route::get('/authorize', 'AuthController@gettoken');
现在微软在他们的文档中提供了这个:
public function signin()
{
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
// Initialize the OAuth client
$oauthClient = new \League\OAuth2\Client\Provider\GenericProvider([
'clientId' => env('OAUTH_APP_ID'),
'clientSecret' => env('OAUTH_APP_PASSWORD'),
'redirectUri' => env('OAUTH_REDIRECT_URI'),
'urlAuthorize' => env('OAUTH_AUTHORITY').env('OAUTH_AUTHORIZE_ENDPOINT'),
'urlAccessToken' => env('OAUTH_AUTHORITY').env('OAUTH_TOKEN_ENDPOINT'),
'urlResourceOwnerDetails' => '',
'scopes' => env('OAUTH_SCOPES')
]);
// Generate the auth URL
$authorizationUrl = $oauthClient->getAuthorizationUrl();
// Save client state so we can validate in response
$_SESSION['oauth_state'] = $oauthClient->getState();
// Redirect to authorization endpoint
header('Location: '.$authorizationUrl);
exit();
}
https://docs.microsoft.com/en-us/outlook/rest/php-tutorial微软可能在 office365 周围使用相同的方式。希望这将帮助您实现正确的代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句