Es gibt wirklich keine Möglichkeit (die ich gefunden habe) vollständig Bypass auf eine externe Seite den Besuch der OAuth2.0 Zugang zu autorisieren. Am nächsten komme ich, um ein "Installierte Anwendung" -Projekt auf code.google.com/apis/console zu erstellen und die Geräte-Methode zu verwenden. Sie erhalten eine Client ID und ein Client Secret. Diese werden später verwendet. Im Idealfall würden Sie einen Entwicklerschlüssel generieren, obwohl ich glaube nicht, dies zu diesem Zeitpunkt erforderlich wird, durch code.google.com/apis/youtube/dashboard/
ich JSON-Notation für Kopf- und Antworten, es sollte leicht an die Sprache Ihrer Wahl anzupassen sein.
Zuerst eine POST-Anforderung machen mit den Headern
{
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': post_data.length,
'X-GData-Key': 'key=YOUR_DEVELOPER_KEY'
}
und die Daten accounts.google.com/o/oauth2/device/code enthält:
{
client_id: 'YOUR_CLIENT_ID',
scope: 'https://gdata.youtube.com'
}
wo YOUR_CLIENT_ID der Client ID, die Sie für das Google Apis-Projekt erhalten haben, das Sie zuvor eingerichtet haben.
Sie erhalten eine Antwort wie diese:
{
"device_code" : "4/Pj8m71w5XuEMTT0ZwOJVgvlTfF4Q",
"user_code" : "5wtw67wm",
"verification_url" : "http://www.google.com/device",
"expires_in" : 1800,
"interval" : 5
}
Wenn Sie nicht besuchen www.google.com/device (von der „VERIFICATION_URL“ -Feld definiert ist) innerhalb von 30 Minuten (1800 Sekunden pro die " expires_in "Antwortfeld), müssen Sie diese erste Anfrage erneut durchführen. Auf der Seite www.google.com/device werden Sie aufgefordert, sich anzumelden, falls Sie noch nicht angemeldet sind, und dann den Bestätigungscode einzugeben (definiert durch das Antwortfeld "user_code"). Sie erhalten eine Anfrage zur Autorisierung der Anwendung und eine Liste der Berechtigungen, die die App anfordert. Sie möchten den Wert für das Feld "device_code" (zumindest temporär) speichern. Dies wird verwendet, wenn ein Zugriffstoken und ein Aktualisierungstoken angefordert werden.
Nachdem die Berechtigung erteilt wurde, können wir ein Zugriffs-/Aktualisierungstokenpaar anfordern. Dies muss nur einmal geschehen, vorausgesetzt, Sie speichern das Aktualisierungstoken. den Zugang zu bitten/Aktualisierungs-Token Paar müssen Sie eine POST-Anfrage mit den Headern
{
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': post_data.length,
'X-GData-Key': 'key=YOUR_DEVELOPER_KEY'
}
und die Daten accounts.google.com/o/oauth2/token machen
{
client_id: 'YOUR_CLIENT_ID',
client_secret: 'YOUR_CLIENT_SECRET',
code: 'YOUR_DEVICE_CODE',
grant_type: 'http://oauth.net/grant_type/device/1.0'
}
Die Antwort wird so aussehen
{
"access_token" : "YOUR_ACCESS_TOKEN",
"token_type" : "Bearer",
"expires_in" : 3600,
"refresh_token" : "YOUR_REFRESH_TOKEN"
}
Dies gibt an, dass die Zugriffstoken in 3.600 Sekunden abgelaufen ist (60 Minuten) und was Ihre aktuellen Zugriffstoken ist und was die Aktualisierungs-Token ist. Sie möchten das Zugriffstoken für die Verwendung mit Ihrer aktuellen Sitzung und das Aktualisierungstoken für zukünftige Sitzungen speichern.
Wenn Sie eine API-Anfrage erstellen, möchten Sie das Zugriffstoken in das Feld Authorization-Header aufnehmen und den Entwicklerschlüssel einfügen, so wie wir es schon immer gemacht haben. Für ein Video hochladen, benutzte ich diese Header:
{
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'X-GData-Key': 'key=YOUR_DEVELOPER_KEY',
'Slug': 'video.mp4',
'Content-Type': 'multipart/related; boundary="f897a6d"',
'Content-Length': post_length,
'Connection': 'close'
}
Sie können Ihr Zugriffstoken jederzeit aktualisieren, nicht nur, wenn das alte abläuft. Um Ihre Zugriffstoken aktualisieren Sie eine POST-Anfrage machen mit den Header accounts.google.com/o/oauth2/token
{
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': post_data.length,
'X-GData-Key': 'key=YOUR_DEVELOPER_KEY'
}
und die Daten
{
client_id: 'YOUR_CLIENT_ID',
client_secret: 'YOUR_CLIENT_SECRET',
refresh_token: 'YOUR_REFRESH_TOKEN',
grant_type: 'refresh_token'
}
Sie erhalten eine Antwort wie diese erhalten
{
"access_token" : "YOUR_NEW_ACCESS_TOKEN",
"token_type" : "Bearer",
"expires_in" : 3600
}
wo YOUR_NEW_ACCESS_TOKEN das neue Token ist für Sie in Ihren zukünftigen Anforderungen zu verwenden.
Gibt es eine Möglichkeit, dies mit den .net-Bibliotheken zu verbinden, wie zum Beispiel das Video-Objekt? –