zoukankan      html  css  js  c++  java
  • iOS 中通过使用Google API获得Google服务

    最近使用了google drive这个云存储,官方指导网址为 https://developers.google.com/drive/ios/ 。

    官方库代码网址为 http://code.google.com/p/google-api-objectivec-client/,这个库是开源的,不单单提供了对drive的访问的api,还提供了对google+等其他谷歌服务的api。另外这里的认证等其他逻辑都可以用到其他程序中,通用性较强,适合仔细分析理解。

    下面说说具体的使用。

    下载后,差看文件夹,如图

    examples中是多个demo,每个demo针对不同的google服务,比如针对drive的,针对google+的。source中是关键的库代码。

    我们先根据 https://developers.google.com/drive/ios/quickstart创建好例子工程。

    关键代码如下

    1.

     self.driveService.authorizer = [GTMOAuth2ViewControllerTouch authForGoogleFromKeychainForName:kKeychainItemName
                                                                                             clientID:kClientID
                                                                                         clientSecret:kClientSecret];

    这句话是尝试从KeyChain中取得认证信息,并赋值给认证对象。

     2.

     authController = [[GTMOAuth2ViewControllerTouch alloc] initWithScope:kGTLAuthScopeDrive
                                                                    clientID:kClientID
                                                                clientSecret:kClientSecret
                                                            keychainItemName:kKeychainItemName
                                                                    delegate:self
                                                            finishedSelector:@selector(viewController:finishedWithAuth:error:)];

    这段用来创建一个视图控制器,这个控制器会访问google网站获取授权,获得授权成功后,会把部分信息保存到keychain中。这里的initWithScope:kGTLAuthScopeDrive 需要注意一下,这的scope指的是申请的访问范围,不在范围内的数据不会被操作到。如果你检索不到已经加入了的文档,请查看这个参数是不是没有设置正确。每个scope对应的范围不太清楚,需要研究下。

    下面是我的demo中保存到keychain中的数据

    email=xxxxx%40gmail.com&isVerified=1&refresh_token=1%2FJtXTE-iiZS9Y8gEzV5e5B8mJAzqzEkmTKqCIr76c8TQ&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&serviceProvider=Google&userID=107310619199151748871

    可以看到,保存的不单单是帐号密码,还有scope等信息。

    你可以在下面这个函数中获得password具体保存的值

    + (BOOL)saveParamsToKeychainForName:(NSString *)keychainItemName
                          accessibility:(CFTypeRef)accessibility
                         authentication:(GTMOAuth2Authentication *)auth
                                  error:(NSError **)error
  • 相关阅读:
    POJ 2253 Frogger(最短路 Floyd)
    POJ 1062 昂贵的聘礼 (最短路 Dijkstra)
    POJ 3259 Wormholes(最短路Bellman_Ford)
    POJ 3414 Pots(容量BFS)
    POJ 3087 Shuffle'm Up(模拟题)
    POJ 3216 Prime Path(数字BFS)
    refresh的停车场
    基于邻接表的广度优先搜索遍历
    判断给定图是否存在合法的拓扑排序
    威威猫系列故事——篮球梦
  • 原文地址:https://www.cnblogs.com/breezemist/p/3631193.html
Copyright © 2011-2022 走看看