我正在尝试制作一个iOS应用程序,用户可以使用
YouTube API
。为此,必须对用户进行身份验证。所以,我用了谷歌的
Google Sign-In
验证我的用户。我跟着
implementation guide
,似乎用户已登录。我可以访问用户的数据,如他们的配置文件图像、名称等。
因为我用的是
YouTube应用程序接口
,我需要在用户登录之前将YouTube范围添加到Google登录。所以,我是这样做的…
GIDSignIn.sharedInstance().scopes = ["https://www.googleapis.com/auth/youtube"]
现在,只要用户登录,就会请求访问他们的YouTube频道。
一切似乎都很顺利。但是,现在来评价YouTube视频。你可以退房
Google's documentation on how to rate a YouTube video
但基本上,这就是我要做的。
Alamofire.request("https://www.googleapis.com/youtube/v3/videos/rate", method: .post, parameters: ["access_token":token, "id":"9T56NNzHE7A","rating":"like"], encoding: URLEncoding.default, headers: nil).responseJSON { (response) in
print("\(response)")
}
现在,因为这需要身份验证,API需要一个访问令牌。所以(如你所见)我给了API谷歌登录给我的访问令牌。即:
let token = GIDSignIn.sharedInstance().currentUser.authentication.accessToken!
但是,这个请求不起作用。我得到的回应是
SUCCESS: {
error = {
code = 401;
errors = (
{
domain = global;
location = Authorization;
locationType = header;
message = "Invalid Credentials";
reason = authError;
}
);
message = "Invalid Credentials";
};
}
我不明白如果用户在几秒钟前登录,那么凭证是如何无效的。如果有帮助,下面是我的访问令牌的一个示例(不用担心,这实际上不是它):
ve35.lmaibhsk3以上nr34rb0fgthwizj-dnb7k935ehyvk1x8nkgmbma---U 3hxhys7uk-hem3ggg-higjv83rhxhgnkvkwn0sen7xtwhtbevjg8hsbk3h8h1gx8khehejgvg
我在网上到处找,试图找到答案,但没有用。所以我决定问。有人知道如何解决这个问题吗?任何意见都将受到高度赞赏!