exchangewebservices — Получите все общие папки / общие контакты из EWS office365 с переполнением стека

Я создаю простую книгу контактов из офиса 365, в которой перечислены все общие контакты моей компании.
Я тоже пробовал использовать Graph и EWS, но не могу понять, что же не так.

Поиск в Microsoft Graph Explorer Кажется, у меня нет шансов увидеть мою папку «Другие контакты» -> «Все контакты».
Я пытался с конечной точкой «/ me / contactFolders» и с конечной точкой «/ people». Ни один из них не дал мне результатов.

Я также использовал PHP-овость библиотека (проект построен на Laravel) для доступа к папкам через Exchange, без удачи.
с помощью этот пример, Я могу перечислить только мой контакт, без каких-либо шансов увидеть другие папки или другие виды контактов.

У кого-нибудь есть совет для новичка ?!

заранее спасибо.
РЕДАКТИРОВАТЬ
это контроллер, который работает с библиотекой PHP-EWS

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use garethp\ews\ContactsAPI as ContactsAPI;

use garethp\ews\API;
use garethp\ews\API\Enumeration;
use garethp\ews\API\Type;
use garethp\ews\API\ExchangeWebServices;
//use garethp\ews\API\ExchangeAutodiscover;
//use garethp\ews\API\Exception\AutodiscoverFailed;
class SharedContatctsController extends Controller
{
//
public function index()
{
# code...

$mail='[email protected]';
$pwd='password';
$version='Exchange2016';
//$apiS = ExchangeAutodiscover::getAPI($mail, $pwd);
//$server=$apiS->getClient()->getServer();
$server='mail.example.com;
$api = ContactsAPI::withUsernameAndPassword($server, $mail, $pwd);
$contacts = $api->getContacts();
//return print($api->getFolderId());
//If you want to get contacts within a folder
//$folder = $api->getFolderByDisplayName('Altri Contatti', 'contacts');
//$contacts = $api->getContacts($folder->getFolderId());
return view('shared',array('contacts'=>$contacts,'displayName'=>$contacts['displayName']));
}

}

Это Контроллер, который (вполне работает) отображает папку «BackupContacts», которая находится в том же каталоге, что и «Контакт»

<?php

namespace App\Http\Controllers;
use Microsoft\Graph\Graph;
use Microsoft\Graph\Model;
use App\Http\Controllers\Controller;

class OutlookController extends Controller
{
public function contacts()
{
if (session_status() == PHP_SESSION_NONE) {
session_start();
}

$tokenCache = new \App\TokenStore\TokenCache;

$graph = new Graph();
$graph->setAccessToken($tokenCache->getAccessToken());

$user = $graph->createRequest('GET', '/me')
->setReturnType(Model\User::class)
->execute();

$contactsQueryParams = array (
// // Only return givenName, surname, and emailAddresses fields
//"\$select" => "displayName,scoredEmailAddresses",
// Sort by given name
//"\$orderby" => "givenName ASC",
// Return at most 10 results
"\$orderby"=>"displayName",
"\$top" => "1000");

$getContactsUrl = '/me/contactFolders/{BackuPlderId-retrieved-with-Graph}/contacts/?'.http_build_query($contactsQueryParams);
$contacts = $graph->createRequest('GET', $getContactsUrl)
->addHeaders(array ('X-AnchorMailbox' => $user->getMail()))
->setReturnType(Model\Contact::class)
->execute();

return view('contacts', array(
'username' => $user->getdisplayName(),
'usermail' => $user->getMail(),
'contacts' => $contacts
));
}
}

0

Решение

/me/contacts вернет только контакты в текущий пользователь папка контактов по умолчанию. Точно так же /me/contactFolders вернет только папки контактов для текущий пользователь почтовый ящик (и пустой результат, если за их папкой по умолчанию ничего нет.

Ключ здесь /me элемент. Это синоним currently authenticated user, Так что, если пользователь, который прошел проверку подлинности был [email protected] и то и другое /me/contacts а также /users/[email protected]/contacts вернул бы точно такие же результаты.

В настоящее время нет способа извлечения контактов организации (т. Е. Контактов, хранящихся в вашем глобальном списке адресов) из /v1.0 API установлен. Однако есть orgContact объект в /beta API, так что поддержка ожидается.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]