• 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
  • 相关阅读:
    js全局变量
    $.getJSON异步请求和同步请求
    让js中的函数只有一次有效调用
    两个div并排显示,当浏览器界面缩小时会出现换行
    jquery获取窗口和文档的高度和宽度
    后台传带引号(")的数据需要注意
    C# dynamic
    (转)数据库函数解析JSON字符串
    Unicode和UTF-8
    用户通过浏览器修改表单隐藏域
  • 原文地址:https://www.cnblogs.com/breezemist/p/3631193.html
Copyright © 2020-2023  润新知