Comments (6)
It seems that an auth code for the server can be obtained by applying additionalParameters
.
let authRequest = OIDAuthorizationRequest(configuration: GTMAppAuthFetcherAuthorization.configurationForGoogle(),
clientId: "CLIENT_ID",
scopes: scopes,
redirectURL: redirectURL,
responseType: OIDResponseTypeCode,
additionalParameters: ["audience": "SERVER_CLIENT_ID"])
OIDAuthState.authState(byPresenting: authRequest,
presenting: presenting) { (state, error) in
let serverAuthCode = state?.lastTokenResponse?.additionalParameters?["server_code"] as? String
}
from gtmappauth.
Fast response during triage: I believe the flow you're suggesting is explicitly not supported by the library because transferring tokens to your server this way is not considered best practice. I confess to not looking into your question very hard, and defer to @WilliamDenniss who can provide a canonical answer.
from gtmappauth.
because transferring tokens to your server this way is not considered best practice
Hm, is this true? I believe the flow @thomzon's referring to is this one: https://developers.google.com/identity/sign-in/ios/offline-access, where we get an auth code (serverAuthCode
in the doc) that can then be passed to the server.
I'd also like for this library to support server-side (offline) access - I've a macOS app, so it looks like this library suits. However, we use offline access, so we'd like to pass an auth code to the server so it can get refresh + access tokens. This library doesn't seem to support it. (or maybe I'm not looking in the right places for it?)
from gtmappauth.
Closing this since it looks like it has been answered. Thanks @cocavo
from gtmappauth.
@cocavo Setting the audience parameter does get the server_code. However, exchanging the code for tokens on the server results in an invalid_grant/Bad request error. Is there any else we need to do?
from gtmappauth.
Make sure that the client ID you're using on the server is defined as an OAuth 2.0 Client ID of "Web application" type in the Credentials page of Google Cloud Console and that it is in the same project as the "iOS" type client ID that your app is using.
from gtmappauth.
Related Issues (20)
- Server Client ID for Mac auth HOT 2
- Reference AppAuth in Package.swift HOT 3
- Update usage of deprecated methods HOT 1
- iOS example not working HOT 1
- GTMAppAuth(GTMAppAuthFetcherAuthorization.o) build failure HOT 1
- Issues with OIDExternalUserAgent when requesting OIDAuthState HOT 2
- leaving old webview prompt
- Is GTMAppAuth considered OAuth OOB flow? HOT 3
- Use modern archiving and unarchiving methods in GTMAppAuthFetcherAuthorization.swift HOT 3
- Add support for GTMSessionFetcher 2.x HOT 4
- `pod lib lint` fails for watchOS on `macOS-12` runner HOT 1
- Ensure that `@objc(the_name)` for `AuthState` works with the new `KeychainStore` HOT 1
- g
- Re-enable watchOS platform in test specs
- Link generated documentation in README
- how to use for tvOS
- Need of required reason API policy HOT 2
- V2 to V4 pod migration: GTMAppAuthFetcherAuthorization(fromKeychainForName:) replacement HOT 2
- Privacy Manifest for GTMAppAuth HOT 2
- KeychainAttribute does not work as expected HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gtmappauth.