Es funktioniert genau dann, wenn der Benutzer zum Zeitpunkt der Anforderung von OAuth2 bei LinkedIn angemeldet ist.
Wenn der Benutzer nicht angemeldet ist, tritt ein Fehler auf.
Reihenfolge unserer Aktionen:
https://api.linkedin.com/v1/people/\~
Danach erhalten wir eine 401 mit folgendem Inhalt:
%Vor%Manchmal, nach einiger Zeit, gibt eine Wiederholung mit dem gleichen Access Token eine 200. Manchmal nicht.
Wenn sich der Benutzer während dieser "401-Periode" bei LinkedIn anmeldet, funktioniert das zuvor abgerufene Zugriffstoken auf magische Weise.
Ich weiß nicht, wie ich das lösen kann, da es bei LinkedIn ein Problem zu sein scheint.
Hat jemand irgendwelche Vorschläge oder hat jemand dieses Verhalten vorher gesehen?
Wir haben Cookie-Einstellungen ausprobiert, warten einige Zeit vor unserer Anfrage usw.
Wir fügen Zotonic [1] die OAuth2-Authentifizierung von LinkedIn hinzu, sind jetzt jedoch mit einem nicht funktionierenden Modul beschäftigt.
[1] Ссылка
Bearbeiten:
Jemand hat auf zwei Diskussionen bei LinkedIn hingewiesen. Seine Antwort ist nun leider aus der folgenden Diskussion verschwunden.
Dies sind die Links:
Ich habe alle Vorschläge in diesen Diskussionen versucht, ohne Erfolg.
Bearbeiten Sie # 2:
Wenn ich die erste Diskussion bei LinkedIn überprüfe, zeigt sich, dass ich nicht die einzige Person mit diesen Konsistenzproblemen bin. Etwas bei LinkedIn läuft schief, wenn der Nutzer Cookies deaktiviert hat oder sich während des OAuth "dance" bei LinkedIn anmelden muss Ссылка
Aktualisieren
Gelöst, dank Matthijs Bierman, siehe Antworten unten.
Wir haben am Telefon gesprochen, es stellt sich heraus, dass Sie auf das gleiche Problem stoßen wie hier . LinkedIn akzeptiert den Header Authentication
nicht und erwartet einen Anfrageparameter: oauth2_access_token
.
Für mich hat Ссылка nicht funktioniert.
Hinzufügen von Kopfzeilen
Autorisierung: Bearer [accessToken]
hat nicht funktioniert, bis ich in sdk verlinkt und getestet habe und herausgefunden habe, dass sie auch Request Header
hinzufügen müssenx-li-src: msdk
Mit diesen beiden Headern funktionierte der Aufruf Ссылка .
Hoffentlich bindet Linkedin diese undokumentierte Anforderung bald ...
Mit Hilfe von Matthijs Bierman haben wir eine Lösung für unser Problem gefunden.
Wir haben uns mit einem Authorization: Bearer ....
Header authentifiziert.
Wenn wir stattdessen das Argument oauth2_access_token
query verwenden, funktioniert es in beiden Anwendungsfällen mit und ohne einen angemeldeten LinkedIn-Benutzer.
Fazit: Verwenden Sie nicht den Header Authorization und verwenden Sie stattdessen das Abfrage-Argument oauth2_access_token .
Gleiches hier, jedes Mal, wenn ich neues access_token bekam, musste ich einige Minuten warten, bis es gültig war. Das war inakzeptabel.
Ich habe mir angeschaut, wie verschiedene Sites das SignIn mit LinkedIn machen und hier ist eine Lösung, die für mich funktioniert hat.
Wenn Sie AUTH_CODE austauschen, um ACCESS_TOKEN zu erhalten, verwenden Sie die Methode GET anstelle von POST, zB:
%Vor%Grails Integration mit LinkedIn OAuth2 Beispiel: Ссылка
Ich sehe das gleiche Problem; Der Abfrageparameter funktioniert jedoch nicht für mich.
Es ist genau wie die beschriebene Frage charakterisiert: 1) Ich habe ein gültiges Token 2) Der Benutzer ist von linkedin abgemeldet 3) Die Anfrage für das Benutzerprofil schlägt fehl 4) Warte fünf Minuten und es gelingt
Sie können meine Anfrage / Antwort unten sehen:
%Vor%Ich habe alle obigen Lösungen versucht, aber nicht mit mir gearbeitet. Ich habe meine URL von
geändert %Vor%bis
%Vor%es hat richtig funktioniert.
Der authentifizierte Status des Nutzers auf LinkedIn.com (unabhängig davon, ob er eingeloggt ist oder nicht) hat keinen Einfluss auf ein gültiges OAuth-Zugriffstoken. Mit anderen Worten, der Benutzer kann sich bei LinkedIn.com abmelden, und dieses Token sollte weiterhin funktionieren, bis es widerrufen oder abgelaufen ist.
Besteht die Möglichkeit, dass Sie ein neues Token generieren? Das würde den vorherigen ungültig machen. Diese Fehlernachricht, die Sie geteilt haben, wird normalerweise verursacht, wenn ein Token aktualisiert wurde und Sie einen API-Aufruf mit dem vorherigen Token machen