gpt4 book ai didi

youtube - GTMOAuth2Authentication 不工作

转载 作者:行者123 更新时间:2023-12-03 06:24:23 25 4
gpt4 key购买 nike

我正在尝试使用 Google 的 OAuth2 和 YouTube API。 OAuth 返回 GTMOAuth2Authentication然后您可以使用该对象向 YouTube 等服务发出请求。我的登录工作正常,当我手动通过身份验证对象时,我可以发出请求。

但是,我也应该能够通过钥匙串(keychain)访问身份验证对象,并且我收到了一个有效的对象,但是如果我尝试使用它来发出请求,我就不能。我不断收到以下错误:“操作无法完成。(com.google.GTMHTTPFetcher 错误 -1。)”如果有人能指出我的错误,我将不胜感激。我正在测试真正的 iPhone 5s。

验证码:

GTMOAuth2ViewControllerTouch * viewController = [[GTMOAuth2ViewControllerTouch alloc]
initWithScope:scope
clientID:kGoogleClientID
clientSecret:kGoogleClientSecret
keychainItemName:kGoogleKeychainItemName
delegate:self
finishedSelector:@selector(viewController:
finishedWithAuth:
error:)];
[self.navigationController pushViewController:viewController animated:YES];

身份验证完成处理程序:
- (void)viewController:(GTMOAuth2ViewControllerTouch *)viewController
finishedWithAuth:(GTMOAuth2Authentication *)auth
error:(NSError *)error {

NSLog(@"%s", __PRETTY_FUNCTION__);

if (error != nil) {
NSLog(@"%s %@", __PRETTY_FUNCTION__, error.localizedDescription);
return;
}

MediaGETWrapper *getWrapper = [MediaGETWrapper sharedWrapper];
getWrapper.googleAuth = auth; // passing auth directly without keychain

[getWrapper youTubeSubscriptionsWithSuccess:nil failure:nil];

YouTube 客户端初始化:
self.youTube = [GTLServiceYouTube new];
GTMOAuth2Authentication *auth = [GTMOAuth2Authentication new];

[GTMOAuth2ViewControllerTouch
authorizeFromKeychainForName:kGoogleKeychainItemName
authentication:auth
error:nil];

self.youTube.authorizer = auth;

要求:
- (void)youTubeSubscriptionsWithSuccess:(void(^)(NSArray *subscriptions))success
failure:(void(^)(NSError *error))error {

NSLog(@"%s", __PRETTY_FUNCTION__);

// self.youTube.authorizer = self.googleAuth; // If uncommented, works!

GTLQueryYouTube *query = [GTLQueryYouTube queryForSubscriptionsListWithPart:@"snippet"];
query.mine = YES;

[self.youTube
executeQuery:query
completionHandler:^(GTLServiceTicket *ticket,
GTLYouTubeChannelListResponse *channelList,
NSError *error) {

if (error != nil) {
NSLog(@"%s %@", __PRETTY_FUNCTION__, error.localizedDescription); // fails here
return;
}

for (GTLYouTubeSubscription *channel in channelList) {
NSLog(@"%@", channel.snippet.title);
}
}];
}

最佳答案

我找不到直接的修复方法,但你可以这样做:

GTMOAuth2Authentication 获取访问 token 对象通过:

auth.accessToken

然后在要发出请求的任何地方设置访问 token 。
要刷新 token ,请使用以下方法:
[auth 
authorizeRequest:nil // just to refresh
completionHandler:^(NSError *error) {
// your code here
}];

关于youtube - GTMOAuth2Authentication 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28955274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com