php 通过microsoft graph api从sharepoint站点获取新闻

yjghlzjz  于 2022-10-30  发布在  PHP
关注(0)|答案(1)|浏览(146)

我一直在通过microsoft graph api从sharepoint网站获取新闻,这是我最后的手段。我已经多次使用microsoft graph api,我已经找到了如何使用一个工作的microsoft帐户来获取我所在的网站,通过以下方式可以很好地工作:https://learn.microsoft.com/en-us/graph/api/resources/site?view=graph-rest-1.0
但是我不知道从这里到哪里去获得在sharepoint网站上创建的新闻,也许有人可以指导我在哪里获得这些新闻的正确方向?
我试过多次查看微软的图表文档,我试过所有与网站有关的东西,但只得到了该帐户所属网站的列表。我试过寻找解决方案,但没有运气。
这是我用来获得SharePoint站点列表的:

/sites?search=*&$select=id,displayName,description,webUrl,sharepointIds
btqmn9zl

btqmn9zl1#

我想我已经弄明白了,但我不知道为什么它不工作,如果我这样做在同一流程,所以我必须做的是调用微软图形API(我这样做是通过联盟。

$oauthClient = new \League\OAuth2\Client\Provider\GenericProvider([
            'clientId'                => $this->clientId,
            'clientSecret'            => $this->clientSecret,
            'redirectUri'             => "<redirect url>",
            'urlAuthorize'            => "https://login.microsoftonline.com/<tenant id>/oauth2/v2.0/authorize",
            'urlAccessToken'          => "https://login.microsoftonline.com/<tenant id>/oauth2/v2.0/token",
            'urlResourceOwnerDetails' => '',
            'scopes'                  => "openid profile User.Read offline_access Sites.Read.All",
        ]);
        $accessToken        = $oauthClient->getAccessToken("authorization_code", ['code' => $authorization_code]);

在我获得access_token和refresh_token之后,我使用curl通过使用上一步中的frefresh_token来获得sharepoint online的access_token和refresh_token:

$curl = curl_init();
        curl_setopt_array($curl, array(
          CURLOPT_URL => "https://login.microsoftonline.com/<tenant id>/oauth2/v2.0/token",
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_MAXREDIRS => 10,
          CURLOPT_TIMEOUT => 0,
          CURLOPT_CUSTOMREQUEST => "GET",
          CURLOPT_POSTFIELDS => "client_id=<client id>&client_secret=<client secret>&refresh_token=<refresh token from the previous step>&grant_type=refresh_token&scope=https%3A%2F%<tenant name>.sharepoint.com%2FSites.Read.All",
          CURLOPT_HTTPHEADER => array(
            "Content-Type: application/x-www-form-urlencoded"
          ),
        ));
        $SPOResponse = curl_exec($curl);
        $SPOResponse = json_decode($SPOResponse);
        $SPOHttpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
        curl_close($curl);

我试图使这一切工作在1个步骤,但我不能使它发生的一些原因,如果我找到一种方法,我会更新这个职位。

相关问题