2016-06-10 3 views
1

[IOS СВИФТ]IOS Youtube API v3 получить мои каналы

У меня есть проблемы с YouTube API V3, и я действительно попал в тупик

Итак, в моем приложении у меня есть новейший GoogleSign-В реализованных

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 

Это показывает, как я добавляю новые области.

Я успешно войдите в систему пользователя и извлечь идентификатор пользователя, это данные, access_token и т.д.

Теперь, когда пользователь signedin, мне нужно, чтобы получить его youtubeId/channelId.

Я сделал некоторые исследования, и я обнаружил, что я могу получить идентификатор канала с: https://www.googleapis.com/youtube/v3/channels?part=id&mine=true&key={API_KEY_HERE}

Я даже пытался отправить access_token в URL, но не повезло ..

Но что-то не так, и я получить код статуса 401 -

запрос использует параметр mine, но не правильно авторизован.

Что я делаю неправильно?

Здесь я проверил и все работает отлично: https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.channels.list

результат здесь в песочнице:

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

Кто-нибудь есть идеи? решение? предложение? Thankyou очень

На самом деле, почему я не авторизовался, если я просто успешно подписал сам?

Пробовал даже добавить заголовок для авторизации:

Bearer {id_access_token} 

ответ

0

я, наконец, нашел решение.

Да, заголовок должен быть отправлен. Единственная проблема была с токеном!

Когда успешно зарегистрировались, вы получите

GIDGoogleUser 

экземпляра.

Это - позволяет называть его «пользователь», есть .authentication с USERID, idToken и маркер доступа

В документации есть только упоминание о idToken, так что я подумал, что это на самом деле маркер доступа. Как глупо от меня:/

Извлеченный урок!

+0

Привет, не могли бы вы объяснить свое решение больше? Это то, что я делаю: '' 'let finalQuery =" https://www.googleapis.com/youtube/v3/subscriptions?key=\(ProfileNetwork.apiKey) & part = snippet & mine = true "' '' Ошибка, которую я получаю: 'Запрос использует параметр минии, но не имеет надлежащего разрешения' Я отправляю ключ, который я изначально получил для своего приложения, и мог бы просто быть основным ключом API YouTube. Я получаю объект пользователя, когда я вхожу в журнал, в котором есть куча жетонов внутри него. Я не уверен, что мне это нужно. Я пробовал кучу комбинаций запросов и ни один из них они работают. Любая помощь будет оценена! –

+0

@tokan_one Я действительно не помню, какой ключ был на самом деле правильным, но определенно один из этих ключей в объекте пользователя должен быть правильным – virusss8

+1

Спасибо @ virusss8, я понял это! Для любого будущего человека вы должны включить HTTP-заголовок '{" Authorization ":" Bearer <#accessToken #> "}' –