检查gdata访问令牌的有效性



我正在使用gdata sdk上传视频到youtube。今天我正在测试如果我撤销我的应用程序对youtube的访问会发生什么。在撤销了Google帐户安全(https://accounts.google.com/b/0/IssuedAuthSubTokens)的访问权限后,我试图将视频上传到youtube。奇怪的是,我完成的选择器没有被调用,既没有错误,也没有成功。这让我相信,如果我被允许上传到youtube,我应该更彻底地检查一下。

问题是我不知道该怎么做。这是我当前检查是否需要执行登录的代码:
    - (BOOL)isSignedIn
    {
        NSString *clientID = @"CLIENT_ID";
        NSString *clientSecret = @"CLIENT_SECRET";
        NSString *keychainName= @"KEYCHAIN_NAME";
        GTMOAuth2Authentication *auth = [GTMOAuth2ViewControllerTouch authForGoogleFromKeychainForName:keychainName
                                                                     clientID:clientID
clientSecret:clientSecret];
        [[self youTubeService] setAuthorizer:auth];
        return  auth.canAuthorize;
    }

这是如果isSignedIn返回NO时登录的代码:

-(void)performSignIn:(id)arg
{       
    NSString *scope = [GDataServiceGoogleYouTube authorizationScope];
    NSString *clientID = @"CLIENT_ID";
    NSString *clientSecret = @"CLIENT_SECRET";
    NSString *keychainName= @"KEYCHAIN_NAME";
    SEL finishedSel = @selector(viewController:finishedWithAuth:error:);


    GTMOAuth2ViewControllerTouch *viewController;
    viewController = [GTMOAuth2ViewControllerTouch controllerWithScope:scope
                                                              clientID:clientID
                                                          clientSecret:clientSecret
                                                      keychainItemName:keychainName
                                                              delegate:self
                                                      finishedSelector:finishedSel];
    UINavigationController *aNavController = [[UINavigationController alloc] initWithRootViewController:viewController];
    [self presentModalViewController:aNavController animated:YES];
    [aNavController release];
}

是否有办法检查我的访问令牌是否仍然有效?

一般情况下,您可以通过调用https://www.google.com/accounts/AuthSubTokenInfo?bearer_token=OAUTH_2_TOKEN来检查google颁发的OAuth 2访问令牌是否有效,并查看您是否获得HTTP 200或40x响应。

更有意义的是做一个"便宜的"经过身份验证的YouTube API调用,比如https://gdata.youtube.com/feeds/api/users/default?v=2,看看你是否得到一个有效的响应或错误。

最新更新