2016-06-10 17 views
1

[IOS SWIFT]iOS Youtube API v3 abrufen meine Kanäle

ich ein Problem mit youtube api v3 haben, und ich traf wirklich eine Sackgasse

in meiner app Also, ich habe neueste GoogleSign-In implementiert

let newScope: Array = 
     ["https://www.googleapis.com/auth/youtube", 
     "https://www.googleapis.com/auth/youtube.force-ssl", 
     "https://www.googleapis.com/auth/youtube.readonly"] 
GIDSignIn.sharedInstance().scopes = newScope 

Dies zeigt, wie ich neue Bereiche hinzufügen.

ich in Benutzer erfolgreich anmelden und Benutzer-ID retreive, ist es Daten, access_token usw.

Nun, da der Benutzer signedin, ich brauche seine youtubeId/channelId zu bekommen.

Ich habe einige Nachforschungen und ich fand, dass ich meine Kanal-ID bekommen mit: https://www.googleapis.com/youtube/v3/channels?part=id&mine=true&key={API_KEY_HERE}

ich auch in URL senden access_token versucht, aber ohne Glück ..

Aber etwas ist falsch und ich Statuscode 401 erhalten -

die Anforderung verwendet den mine Parameter ist aber nicht richtig autorisiert.

Was mache ich falsch?

Hier habe ich getestet und alles funktioniert: https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.channels.list

Ergebnis hier im Sandkasten:

{ 
"kind": "youtube#channelListResponse", 
"etag": "\"XXXXXXX\"", 
"pageInfo": { 
    "totalResults": 1, 
    "resultsPerPage": 1 
}, 
"items": [ 
    { 
    "kind": "youtube#channel", 
    "etag": "\"XXXXX\"", 
    "id": "XXXXX", 
    "googlePlusUserId": "ID_ID_ID" 
    } 
    } 
] 
} 

Jeder Idee? Lösung? Vorschlag? Vielen Dank

In der Tat, warum bin ich nicht autorisiert, wenn ich nur erfolgreich in mich selbst signiert habe ??

sogar Header versucht, indem für die Zulassung:

Bearer {id_access_token} 

Antwort

0

ich endlich die Lösung gefunden.

Ja, die Kopfzeile muss gesendet werden. Das einzige Problem war mit Token!

Wenn die Signin erfolgreich ist, erhalten Sie

GIDGoogleUser 

Instanz.

That - nennen wir es "user", haben .authentication mit userID, idToken und accessToken

In der Dokumentation gibt es nur erwähnt idToken, also dachte ich, dass dieses Zeichen tatsächlich der Zugriff. Wie dumm von mir:/

Lektion gelernt!

+0

Hallo, könnten Sie Ihre Lösung mehr erklären? Dies ist, was ich tue: '' 'Let finalQuery =" https://www.googleapis.com/youtube/v3/subscriptions?key=\(ProfileNetwork.apiKey) & part = snippet & mine = true "' '' Der Fehler, den ich bekomme ist: 'Die Anfrage verwendet den Mine Parameter, ist aber nicht richtig autorisiert' Ich sende den Schlüssel, den ich ursprünglich für meine App bekommen habe, und könnte einfach Es ist ein grundlegender YouTube-API-Schlüssel. Ich erhalte das Benutzerobjekt, wenn ich logge, das eine Menge Token enthält. Ich bin mir nicht sicher, ob ich diese stattdessen benötige. Ich habe eine Menge Kombinationen von Querys ausprobiert sie arbeiten .. Jede Hilfe würde geschätzt werden! –

+0

@tokan_one Ich erinnere mich wirklich nicht, welcher Schlüssel war eigentlich der richtige, aber definitiv einer dieser Schlüssel in Benutzerobjekt muss korrekt sein – virusss8

+1

Danke @ virusss8, ich fand es heraus! Für jede zukünftige Person Besuch, müssen Sie den HTTP-Header '{" Authorization ":" Bearer <#accessToken #> "}' einschließen –

Verwandte Themen