Heim >Backend-Entwicklung >Golang >„Mieter für Mieter-GUID X existiert nicht' für eigenes E-Mail-Konto (ich bin das einzige Mitglied)

„Mieter für Mieter-GUID X existiert nicht' für eigenes E-Mail-Konto (ich bin das einzige Mitglied)

WBOY
WBOYnach vorne
2024-02-13 16:20:091282Durchsuche

“租户 GUID X 的租户不存在”,对于自己的电子邮件帐户(我是唯一的成员)

php-Editor Yuzai kann bei der Behebung von E-Mail-Kontoproblemen auf die Fehlermeldung „Mandant mit Mandanten-GUID X existiert nicht“ stoßen, insbesondere wenn Sie das einzige Mitglied sind. Diese Fehlermeldung verhindert möglicherweise, dass Sie sich anmelden oder auf Ihr E-Mail-Konto zugreifen können. Für dieses Problem haben wir einige Lösungen, mit denen Sie versuchen können, den Zugriff und die normale Nutzung Ihres E-Mail-Kontos wiederherzustellen. Im Folgenden beschreiben wir einige mögliche Lösungen und Schritte, die Ihnen hoffentlich bei der Lösung Ihres Problems helfen werden.

Inhalt der Frage

Ich möchte die E-Mail für mein persönliches Konto lesen, erhalte jedoch die Meldung „Mieter für Mieter-Guid x existiert nicht“.

  • Ich habe eine Anwendung mit einem einzigen Mandanten auf https://entra.microsoft.com/ erstellt.

  • Dann habe ich ihm die Erlaubnis gegeben, E-Mails zu senden

  • Dann habe ich einen Client-Schlüssel erstellt

  • Dann verwende ich diesen Code, um den Token zu erhalten:

    import(""github.com/azuread/microsoft-authentication-library-for-go/apps/confidential")
     cred, err := confidential.newcredfromsecret("{secret value}")
     if err != nil {
         log.println(err)
         return
     }
     confidentialclient, err := confidential.new("https://login.microsoftonline.com/{tenant id}", "{client id}", cred)
     if err != nil {
         log.println(err)
         return
     }
     scopes := []string{"https://graph.microsoft.com/.default"}
     result, err := confidentialclient.acquiretokensilent(context.todo(), scopes)
     if err != nil {
         result, err = confidentialclient.acquiretokenbycredential(context.todo(), scopes)
         if err != nil {
         log.println(err)
             return
         }
     }
  • Mit diesem Code habe ich den Token erfolgreich erhalten

    {
         "account": {
             "additionalfields": null
         },
         "idtoken": {
             "rawtoken": "",
             "additionalfields": null
         },
         "accesstoken": "{token}",
         "expireson": "2023-12-13t14:57:09.4905758-05:00",
         "grantedscopes": [
             "https://graph.microsoft.com/.default"
         ],
         "declinedscopes": null
     }
  • Dann bekomme ich die Benutzer-ID (ich bin der einzige Benutzer):

    req, err := http.newrequest("get", "https://graph.microsoft.com/v1.0/users", nil)
     if err != nil {
         log.println(err)
         return
     }
     req.header.add("authorization", "{token}")
     client := http.client{}
     resp, err := client.do(req)
     if err != nil {
         log.println(err)
         return
     }
     body, err := io.readall(resp.body)
     if err != nil {
         log.println(err)
         return
     }
  • Aber wenn ich versuche, die E-Mail zu bekommen:

    req, err := http.newrequest("get", "https://graph.microsoft.com/v1.0/users/{user_id}/messages", nil)
         if err != nil {
             log.println(err)
             return
         }
         req.header.add("authorization", "{token}")
         client := http.client{}
         resp, err := client.do(req)
         if err != nil {
             log.println(err)
             return
         }
         body, err := io.readall(resp.body)
         if err != nil {
             log.println(err)
             return
         }

Ich habe:

{
    "error": {
        "code": "OrganizationFromTenantGuidNotFound",
        "message": "The tenant for tenant guid '0a6ac917-332a-4f47-881e-0b35fb1b2ab5' does not exist.",
        "innerError": {
            "oAuthEventOperationId": "c096c5c9-e743-4daa-9a97-d14d915e9842",
            "oAuthEventcV": "N0nHeUJm9gwnrFZefuEA4w.1.1",
            "errorUrl": "https://aka.ms/autherrors#error-InvalidTenant",
            "requestId": "c0272999-9743-44ee-98b5-947acc52e7d8",
            "date": "2023-12-13T19:11:22"
        }
    }
}

Die ID des Fehlers 0a6ac917-332a-4f47-881e-0b35fb1b2ab5 ist die Tenand-ID. 0a6ac917-332a-4f47-881e-0b35fb1b2ab5是tenand id

解决方法

要阅读个人 outlook 帐户的邮件,需要切换到委托流程(例如交互流程或生成访问令牌的授权码流程)并调用 /me/ messages

Problemumgehung

Um Mails vom persönlichen” >Outlook-Konto zu lesen, müssen Sie zu

delegiert

wechseln Prozess (z. B. Interaktionsprozess oder Autorisierungscodeprozess, der ein Zugriffstoken generiert) und ruft den Endpunkt /me/messages auf.

Registrieren Sie die Multi-Tenant-App mit dem Kontotyp „Konten in einem beliebigen Organisationsverzeichnis (jeder Microsoft-Entra-ID-Mandant – Multitenant) und persönliche Microsoft-Konten (z. B. Skype, Xbox)

“:

Wenn Sie Interaktionsflüsse zum Generieren von Token verwenden, stellen Sie sicher, dass Sie die Option Öffentlicher Client aktivieren: mail.readmail.readwrite

Fügen Sie nun je nach Bedarf einen

Delegaten

vom Typ mail.read oder /me/messagesmail.readwrite hinzu

Berechtigungen:

Um mithilfe eines Interaktionsflusses ein Zugriffstoken

zu generieren, können Sie auf diesen Beispiel-Go-Code verweisen und ihn dann verwenden, um den

Endpunkt aufzurufen:

package public_test

import (
    "context"

    "github.com/azuread/microsoft-authentication-library-for-go/apps/public"
)

func example() {
    client, err := public.new("client_id", public.withauthority("https://login.microsoftonline.com/common"))
    if err != nil {
    }

    var result public.authresult
    scopes := []string{"https://graph.microsoft.com/.default"}

    accounts, err := client.accounts(context.todo())
    if err != nil {
        // todo: handle error
    }
    if len(accounts) > 0 {
        result, err = client.acquiretokensilent(context.todo(), scopes, public.withsilentaccount(accounts[0]))
    }
    if err != nil || len(accounts) == 0 {
        result, err = client.acquiretokeninteractive(context.todo(), scopes)
        if err != nil {
        }
    }
    _ = result.account
    _ = result.accesstoken
}
Sie können sich auch mit diesem Konto beim

Graph Explorer

anmelden und die folgende Abfrage ausführen, um E-Mails zu erhalten:

GET https://graph.microsoft.com/v1.0/me/messages

Antwort:

🎜🎜Referenz: 🎜🎜 🎜🎜Microsoft Authentication-library-for-go/apps/public/example_test.go befindet sich im Hauptverzeichnis · azuread/microsoft-authentication-library-for-go · github🎜🎜

Das obige ist der detaillierte Inhalt von„Mieter für Mieter-GUID X existiert nicht' für eigenes E-Mail-Konto (ich bin das einzige Mitglied). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen