Microsoft-Graph-API-Library

  • Hallo Miteinander


    Frisch aus der Entwicklung: https://github.com/Fabian95qw/STARFACE-MSGraph-lib


    Nach längerem probieren konnte ich endlich die neue REST-API des Office365 einbinden, und habe daraus eine Library gemacht.


    In der Library enthalten sind:

    • Ein fertiger Baustein, welcher sich mit App-Credentials befüllen lässt, mit denen man auf das Office365 zugreifen kann
    • Ein fertiger Baustein, zum Anmelden eines Benutzers mit Delegierten Rechten mithilfe eines Codes
    • Einen Baustein zum Abrufen aller User als Liste
    • Einen Baustein zum Abrufen aller Kontaktverzeichnise für User
    • Einen Baustein zum Abrufen aller Kontakte für einen User für ein spezifisches Kontaktverzeichnis
    • Einen Baustein um alle möglichen sonstigen Anfragen gemäss REST-API durchzuführen (Siehe: https://docs.microsoft.com/en-…rview?view=graph-rest-1.0)
    • Ein integrierter TokenManager mit auto-refresher (Eine Instanz der Library anlegen)


    Das fertige Modul mit den Bausteinen, sowie zwei Testclients mit Beispielen findet ihr hier: https://github.com/Fabian95qw/…ph-lib/tree/master/module


    Der Testclient ist quelloffen und hat Beispiele für:
    Den Testclient gibt es einem als Beispiel mit App-Credentials, sowie User-Delegierung mit einem DeviceCode.

    • Alle User aus Office365 abrufen, und ins Log ausgeben
    • Für einen Spezifischen User deren Kontaktverzeichnisse abrufen und im Log ausgeben
    • Die Kontakte eines Users für ein Kontaktverzeichnis abrufen und im Log ausgeben
    • Beispiel GUI für Generische Requests. (Gehen ebenfalls ins Log falls aktiviert)
    • Beispiel zum Abrufen der Microsoft Teams Präsenz von allen Office365 Usern (Geht aktuell nicht siehe unten)


    Und ich möchte euch gleich noch um etwas bitten. Anwendungen dürfen aktuell u.a. die Präsenz von Usern im Teams nicht einsehen.
    Dafür gibt's ein entsprechendes Uservoice bei der Microsoft. https://microsoftgraph.uservoi…n-permission-for-presence ich würde mich freuen, wenn ihr dort ebenfalls Voten würdet, damit ich euch ein Modul zum abgleichen des Status zwischen STARFACE und Teams herbeizaubern kann.;)


    Todos:


    • Generischer Request: Request Typ - POST Implementieren
    • Generischer Request: Request-Body Implementieren


    MfG


    Fabian

  • Hallo Fabian,


    da gebe ich doch gern eine Stimme ab. Wir prüfen derzeit auch die Entwicklung einer Lösung, bei der ein bestimmter Status in Teams (z.B. am Telefon, Nicht Stören) ein DND beim Starface User erzeugt. Jedoch nicht auf Modul-Ebene sondern mit einer Windows-Applikation, die die Starface API ansteuert. Wir sind aber noch im "Idee-Modus". Der umgekehrte Weg geht derzeit leider nicht, da die Graph-API ein Ändern des Status nicht zulässt.
    Besten Dank für den Hinweis bzgl. der Einschränkungen.


    Ohne mich jetzt tief auszukennen:
    Wenn ich auf dieser Seite auf "try it" gehe, muss ich dem GraphExplorer (was eine App ist) die Berechtigungen zum Lesen des Status geben. Irgendwie scheint es also doch zu gehen - oder eventuell nur in diesem speziellen Fall. Zudem scheint die Funktion aber nur in der Beta verfügbar zu sein.


    Grüße


    Stephan

  • Hallo Stephan


    Es gibt zwei Arten von Berechtigungen: Delegierte Berechtigungen und Anwendungsberechtigungen.


    Delegierte Berechtigungen bedeutet, dass die Requests im Namen eines Benutzers ausgeführt werden.
    Anwendungsberechtigung ist dementsprechend, wenn eine Applikation diese Information anfragt.


    Get-Presence hat aktuell nur die delegierte Berechtigung: https://docs.microsoft.com/en-…graph-rest-beta&tabs=http


    Permission type Permissions (from least to most privileged)
    Delegated (work or school account) Presence.Read, Presence.Read.All
    Delegated (personal Microsoft account) Not Supported.
    Application Not Supported.


    Wenn du also als User eingeloggt bist, und es Ausprobierst, klappt es. Aber mit dem Token von der Anwendung bekommst du dann ein 403 Forbidden.


    Ich hätte gerne von Anfang an User-Delegated genommen, aber leider kommt damit das OAuth verfahren, mit dem extra Fenster, wo man sich Einloggen muss.
    Das verträgt Sich relativ schlecht mit dem Webinterface der STARFACE, da es extrem eingeschränkt ist, wie man das in die GUI kriegen soll.


    Deshalb bin ich dann mit der Anwendungsberechtigung mit dem Secret key gegangen.


    MfG


    Fabian

  • Noch ein Update hierzu.


    Ich konnte erfolgreich die Userdelegierung einbauen und den dazugehörigen Tokenrefresher bauen.
    Es können nun also auch Delegierte Rechte verwendet werden, und das heisst natürlich wiederum, dass so u.a. aufs MS-Teams zugegriffen werden kann.


    Mehr dazu findet ihr auf der Github page.


    MfG


    Fabian

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!