zch*_*nah 4 ios google-drive-api
我们已经有一个登录模块使用Google Sign-In sdk.登录成功后,Google登录会提供GIDAuthentication对象.
现在我想使用google drive sdk访问用户的google驱动器,这需要GTMOAuth2Authentication来提供身份验证信息.那么我可以使用GIDAuthentication它为驱动程序sdk构建GTMOAuth2Authentication吗?
手动分配accessToken值似乎不起作用(添加驱动器范围).
是的你可以!
使用以下步骤:
按照以下步骤添加Google SignIn,按照以下步骤操作:https://developers.google.com/identity/sign-in/ios/start-integrating.确保为项目启用Google Drive API.
初始化登录对象时,请不要忘记添加Google Drive API范围:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Initialize sign-in
var configureError: NSError?
GGLContext.sharedInstance().configureWithError(&configureError)
assert(configureError == nil, "Error configuring Google services: \(configureError)")
GIDSignIn.sharedInstance().delegate = self
// Use here whatever auth scope you wish (e.g., kGTLAuthScopeDriveReadonly,
// kGTLAuthScopeDriveMetadata, etc..)
// You can obviously append more scopes to allow access to more services,
// other than Google Drive.
GIDSignIn.sharedInstance().scopes.append(kGTLAuthScopeDrive)
return true
}
Run Code Online (Sandbox Code Playgroud)在您AppDelegate(或其他一些可访问的地方),添加:
var myAuth: GTMFetcherAuthorizationProtocol? = nil
Run Code Online (Sandbox Code Playgroud)在signIn委托函数中(假设此处也设置了AppDelegate),添加以下代码:
func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) {
if (error == nil) {
// Logged into google services successfully!
// Save relevant details from user.authentication to refresh the token when needed.
// Set GTMOAuth2Authentication authoriser for your Google Drive service
myAuth = user.authentication.fetcherAuthorizer()
} else {
// Error signing into Google services
}
}
Run Code Online (Sandbox Code Playgroud)最后,无论您在何处设置GoogleServiceDrive,您都可以设置其授权人,只需设置:
let service = GTLServiceDrive()
service.authorizer = (UIApplication.sharedApplication().delegate as! AppDelegate).myAuth
Run Code Online (Sandbox Code Playgroud)现在,您可以使用Google的示例代码
if let authorizer = service.authorizer, canAuth = authorizer.canAuthorize where canAuth {
// service is authorised and can be used for queries
} else {
// service is not authorised
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
999 次 |
| 最近记录: |