Получение статуса активности федерального пользователя Microsoft Graph API

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

Можно ли получить тот же ответ о состоянии активности, что и при использовании панели поиска в Teams, даже если использовать не API Graph, а другие методы? В настоящее время этот метод обеспечивает только статус «офлайн» или «присутствие неизвестно» для всех федеративных пользователей.

Любая помощь или предложения будут очень признательны.

Спасибо!

import requests
import json
from dotenv import load_dotenv
from msal import ConfidentialClientApplication


load_dotenv(dotenv_path=r'....')


CLIENT_ID = os.getenv('CLIENT_ID')
CLIENT_SECRET = os.getenv('CLIENT_SECRET')
TENANT_ID = os.getenv('TENANT_ID')

app = ConfidentialClientApplication(
CLIENT_ID,
authority=f"https://login.microsoftonline.com/{TENANT_ID}",
client_credential=CLIENT_SECRET,)

result = app.acquire_token_for_client(scopes=["https://graph.microsoft.com/.default"])

if "access_token" in result:
access_token = result["access_token"]
else:
print("Error acquiring token:", result.get("error"), result.get("error_description"))
exit(1)

user_id = "..."

presence_url = f'https://graph.microsoft.com/beta/communications/presences/{user_id}'
presence_headers = {
'Authorization': f'Bearer {access_token}',
'Content-Type': 'application/json'}

response = requests.get(presence_url, headers=presence_headers)

if response.status_code == 200:
presence_info = response.json()
print("Presence Info:", json.dumps(presence_info, indent=2))

else:
print("Failed to retrieve presence info:", response.status_code, response.text)

API-интерфейс Graph для определения присутствия не работает для внешних пользователей. Другого решения этой проблемы нет.

Meghana-MSFT 15.07.2024 07:30
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
1
79
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я согласен с @Meghana-MSFT, по умолчанию невозможно получить информацию о присутствии внешних пользователей с помощью API Microsoft Graph. Обратитесь к этой SO Thread от @alphaz18.

  • Внешние пользователи, например те, кто работает в Teams, но не в системе вашей организации, ограничили доступ к информации с помощью таких инструментов, как Microsoft Graph API.
  • Однако гостевые пользователи, даже если они являются внешними, предоставляют подробные отчеты и полный доступ к своим действиям в настройках вашей организации.

Я получил тот же ответ для внешнего пользователя:

# Initialize the ConfidentialClientApplication
app = ConfidentialClientApplication(
    CLIENT_ID,
    authority=f"https://login.microsoftonline.com/{TENANT_ID}",
    client_credential=CLIENT_SECRET
)

# Acquire token for client
result = app.acquire_token_for_client(scopes=["https://graph.microsoft.com/.default"])

if "access_token" in result:
    access_token = result["access_token"]
else:
    print("Error acquiring token:", result.get("error"), result.get("error_description"))
    exit(1)

# User ID for whom presence information is to be retrieved
user_id = "UserID"  # Replace with the actual user ID

# Presence endpoint URL
presence_url = f'https://graph.microsoft.com/beta/communications/presences/{user_id}'
presence_headers = {
    'Authorization': f'Bearer {access_token}',
    'Content-Type': 'application/json'
}

# Send request to Microsoft Graph API
response = requests.get(presence_url, headers=presence_headers)

if response.status_code == 200:
    presence_info = response.json()
    print("Presence Info:", json.dumps(presence_info, indent=2))
else:
    print("Failed to retrieve presence info:", response.status_code, response.text)

  • Конечная точка /presence API Microsoft Graph при доступе с использованием разрешений приложения, таких как Presence.Read или Presence.Read.All, не позволяет получать данные о присутствии для внешних пользователей.
  • Это сделано для обеспечения соблюдения мер конфиденциальности и безопасности, гарантируя, что информация о присутствии пользователей, внешних по отношению к вашей организации, не может быть доступна без специального согласия.

Ссылка:

Гостевые/внешние пользователи отображаются в автономном режиме — невозможно подключиться — Microsoft Community

Другие вопросы по теме