【问题标题】:Making an iOS authorised Google API call进行 iOS 授权的 Google API 调用
【发布时间】:2015-08-21 07:58:54
【问题描述】:

我已将 Google Sign-in 集成到我的 iOS 应用中,并在登录后检索了访问令牌。我现在想要对 Google 进行授权 API 调用,但不确定如何执行此操作以包含令牌。
有人可以分享一些我可以用来包含这个的代码吗?
非常感谢,
卢克

【问题讨论】:

    标签: ios google-api access-token


    【解决方案1】:

    在您登录并获取令牌后,您可以创建服务实例,然后附加一个“授权人”。 Google 的 Objective-C 客户端支持不少服务:https://code.google.com/p/google-api-objectivec-client/

    这是使用 Google+ 的示例:

    Obj-C(启用 ARC)

    GTLServicePlus* plusService = [[GTLServicePlus alloc] init];
    plusService.retryEnabled = YES;
    
    # set an authorizer with your tokens
    [plusService setAuthorizer:[GPPSignIn sharedInstance].authentication];
    
    # submit authenticated queries, assuming your scopes & tokens are legit
    GTLQueryPlus *query = [GTLQueryPlus queryForPeopleListWithUserId:@"me"
                                         collection:kGTLPlusCollectionVisible];
    
    
    [plusService executeQuery:query
            completionHandler:^(GTLServiceTicket *ticket,
                                GTLPlusPeopleFeed *peopleFeed,
                                NSError *error) {
                   //  ... your callback ...
           }];
    

    斯威夫特

    var plusService = GTLServicePlus()
    plusService.retryEnabled = true
    
    # set an authorizer with your tokens
    plusService.authorizer = GPPSignIn.sharedInstance().authentication
    
    if let plusQuery = GTLQueryPlus.queryForPeopleListWithUserId("me",
                    collection: kGTLPlusCollectionVisible) as? GTLPlusQuery {
        // execute the query
        plusService.executeQuery(plusQuery) { (ticket: GTLServiceTicket!,
                                               peopleFeed: GTLPlusPeopleFeed!,
                                               error: NSError!) -> Void in
            // ... your callback ...
        }
    }
    

    There is a sample 专门在 YouTube 上使用 Google Obj-C API 客户端。查看YouTubeSampleWindowController.m 中的229 行以设置您的GTLServiceYouTube 对象,并查看261 行以将其与GTLQueryYouTube 对象一起使用的示例。

    还有一些不错的CocoaDocsThis method 可能就是您所追求的。

    【讨论】:

    • 你能链接到你从哪个页面得到这个吗?理想情况下,您可以为 YouTube 提供一个等价物吗?我点击了链接,当我点击服务时,它只会将我带到他们的开发者主页。谢谢
    • developers.google.com/+/mobile/ios/people,以及一些我自己的 Swift 示例代码。这里还有一个 YouTube API 示例:code.google.com/p/google-api-objectivec-client/source/browse/…
    • 为 YouTube 添加了一些链接和代码参考。希望这些帮助!
    • 我发现了这个并认为它是正确的 developers.google.com/apis-explorer/#p/youtube/v3/… 。就在我尝试它时,我得到了未经授权的请求错误。我正在尝试检索我的订阅者号码。
    • 您是从 API 资源管理器还是您的应用程序中尝试?在 API 资源管理器中,您必须附加 OAuth2 凭据。从您的应用程序中,如果它仍然无法正常工作,请检查您的设备和 Google 之间的网络流量,并确保“授权”标头正在进入您的呼叫。
    【解决方案2】:

    这个问题最终通过BAHYouTubeOAuth 解决,可用here
    我与此创建者进行了交谈,他说在更好的令牌处理方面正在发生变化。
    如果还没有正式修改,请查看我的修改here

    【讨论】:

      猜你喜欢
      • 2018-12-28
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      • 2012-02-15
      • 1970-01-01
      • 2020-02-22
      • 1970-01-01
      • 2019-07-18
      相关资源
      最近更新 更多