Microsoft Office 365任务或Todo php API授权

时间:2018-11-14 13:33:17

标签: php office365

我想实现一些工作流程,他们应该向Microsoft todo应用添加一些任务。

他们有一个休息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;
    }
}

在Microsoft服务上使用php授权的正确方法是什么?

预先感谢

1 个答案:

答案 0 :(得分:2)

查看您的代码和文档,我假设您需要请求令牌才能创建有效的会话。然后在具有会话ID的cookie中的URL上提供该令牌。

Route::get('/authorize', 'AuthController@gettoken');

Microsoft现在在其文档中提供了以下内容:

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周围使用相同的方法。希望这将帮助您实现正确的代码。