Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS Youtube API v3检索我的频道_Ios_Swift_Swift2_Youtube Data Api - Fatal编程技术网

iOS Youtube API v3检索我的频道

iOS Youtube API v3检索我的频道,ios,swift,swift2,youtube-data-api,Ios,Swift,Swift2,Youtube Data Api,[IOS SWIFT] 我对youtube api v3有问题,我真的走到了死胡同 所以,在我的应用程序中,我实现了最新的谷歌登录 let newScope: Array = ["https://www.googleapis.com/auth/youtube", "https://www.googleapis.com/auth/youtube.force-ssl", "https://www.googleapis.com/auth/youtub

[IOS SWIFT]

我对youtube api v3有问题,我真的走到了死胡同

所以,在我的应用程序中,我实现了最新的谷歌登录

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
这显示了如何添加新的作用域

我成功登录用户并检索用户id、数据、访问令牌等

现在用户已登录,我需要获取他的youtubeId/channelId

我做了一些研究,发现我可以通过:
https://www.googleapis.com/youtube/v3/channels?part=id&mine=true&key={API_KEY_HERE}

我甚至尝试在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"
   }
  }
 ]
}
有人知道吗?解决方案提议? 多谢各位

事实上,如果我只是成功地在自己身上签名,为什么我没有得到授权

甚至尝试为授权添加标头:

Bearer {id_access_token}

我终于找到了解决办法

是的,需要发送标题。唯一的问题是令牌

当登录成功时,您将获得

GIDGoogleUser
例如

让我们称它为“用户”,具有使用userID、idToken和accessToken的.authentication

在文档中只提到idToken,所以我认为这实际上就是访问令牌。我真傻:/


吸取教训

我终于找到了解决办法

是的,需要发送标题。唯一的问题是令牌

当登录成功时,您将获得

GIDGoogleUser
例如

让我们称它为“用户”,具有使用userID、idToken和accessToken的.authentication

在文档中只提到idToken,所以我认为这实际上就是访问令牌。我真傻:/


吸取教训

嗨,你能解释一下你的解决方案吗?这就是我正在做的:
let finalQuery=”https://www.googleapis.com/youtube/v3/subscriptions?key=\(ProfileNetwork.apiKey)&part=snippet&mine=true“
我得到的错误是:
请求使用了mine参数,但未正确授权
我正在发送我最初为我的应用程序获得的密钥,可能只是一个基本的YouTube API密钥。我在登录时得到user对象,其中包含一堆令牌。我不确定我是否需要这些。我尝试了一系列查询组合,但都不起作用。任何帮助都将不胜感激@tokan_one我真的不记得哪个键实际上是正确的,但用户对象中的其中一个键肯定是正确的谢谢@viruss8,我找到了!对于将来的任何访问人员,您需要包括HTTP头
{“Authorization”:“Bearer”}
您好,您能详细解释一下您的解决方案吗?这就是我正在做的:
let finalQuery=”https://www.googleapis.com/youtube/v3/subscriptions?key=\(ProfileNetwork.apiKey)&part=snippet&mine=true“
我得到的错误是:
请求使用了mine参数,但未正确授权
我正在发送我最初为我的应用程序获得的密钥,可能只是一个基本的YouTube API密钥。我在登录时得到user对象,其中包含一堆令牌。我不确定我是否需要这些。我尝试了一系列查询组合,但都不起作用。任何帮助都将不胜感激@tokan_one我真的不记得哪个键实际上是正确的,但用户对象中的其中一个键肯定是正确的谢谢@viruss8,我找到了!对于将来的任何访问人员,您需要包括HTTP头
{“Authorization”:“Bearer”}