Heim >Backend-Entwicklung >Golang >„Mieter für Mieter-GUID X existiert nicht' für eigenes E-Mail-Konto (ich bin das einzige Mitglied)
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.
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
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.read
或mail.readwrite
Fügen Sie nun je nach Bedarf einen
Delegaten vom Typ mail.read
oder /me/messages
mail.readwrite
hinzu
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
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!