我通过Google Signin IOS SDK获得了用户访问令牌。然后,我使用以下源代码在YouTube中获取我的播放列表:
func listMyPlaylists(completionHandler: @escaping (_ result: Any?, _ error: Error?) -> ())
{
let url = URL(string: "https://www.googleapis.com/youtube/v3/playlists")!
let parameters: Parameters = ["part": "id","mine": "true"]
let headers: HTTPHeaders = ["Authorization": "Bearer " + accessToken, "Content-Type": "application/json"]
Alamofire.request(url, method: .get, parameters: parameters, encoding: URLEncoding.default, headers: headers).responseJSON { json in
if let error = json.result.error
{
completionHandler(nil, error)
}
else
{
completionHandler(json.result.value, nil)
}
}
}
但是,我有以下错误。我想念什么?
{
error = {
code = 403;
errors = (
{
domain = global;
message = "Insufficient Permission";
reason = insufficientPermissions;
}
);
message = "Insufficient Permission";
};
}
通常会在您不包括YouTube API中所述的授权范围时发生,
禁止(403) - 不足的OAuth 2.0代币提供 因为请求指定不足以访问的范围 请求的数据。
您可以使用的YouTube范围之一是
https://www.googleapis.com/auth/youtube.force-ssl
我同意@noogui的答案,在这里我想解释如何实现此目的 - 检查您设置的范围,如果是 kgtlrauthscopeyoutubereadonly 然后将其更改为 kgtlrauthscopeyoutubeubload
private let scopes = [kGTLRAuthScopeYouTubeUpload]
并将其设置为 viewDidload
GIDSignIn.sharedInstance().scopes = scopes
这是您可以检查
的范围列表kgtlrauthscopeyoutube kgtlrauthscopeyoutubeforcessl kgtlrauthscopeyoutublepload kgtlrauthscopeyoutubereadly kgtlrauthscopeyoutubeyoutubepartner kgtlrauthscopeyoutubeyoutubepartnerchannelaudit