https://github.com/googlesamples/oauth-apps-for-windows
OAuth for Apps: Samples for Windows
https://github.com/googlesamples/oauth-apps-for-windows
Last synced: over 1 year ago
JSON representation
OAuth for Apps: Samples for Windows
- Host: GitHub
- URL: https://github.com/googlesamples/oauth-apps-for-windows
- Owner: googlesamples
- License: other
- Created: 2016-06-29T18:24:11.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2024-01-06T16:42:14.000Z (over 2 years ago)
- Last Synced: 2025-03-01T18:09:09.702Z (over 1 year ago)
- Language: C#
- Homepage: https://developers.google.com/identity/protocols/OAuth2InstalledApp
- Size: 69.3 KB
- Stars: 485
- Watchers: 39
- Forks: 188
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Authors: AUTHORS
Awesome Lists containing this project
README
OAuth for Apps: Samples for Windows
============
This repository contains samples for doing OAuth 2.0 to Google for Windows apps,
including universal apps, traditional desktop apps, and CLI tools.
Introduction
------------
When doing an OAuth 2.0 Authorization flow to Google in a native application, it
is important to follow
[best practices](https://tools.ietf.org/html/rfc8252),
which require using the browser (and not an embedded browser).
These samples show how to complete an OAuth 2.0 Authorization request in a
traditional app, where a loopback redirect is used to received the code, and in
a universal app where a URI scheme is used for the same.
> **Note**
> When using Google APIs, the [Google.Apis.Auth](https://www.nuget.org/packages/Google.Apis.Auth/)
> package provides an OAuth2 implementation which integrates with Google Cloud Platform.
Samples
-------
[OAuthUniversalApp](OAuthUniversalApp/README.md) - Universal Windows Platform
(UWP) sample app
[OAuthDesktopApp](OAuthDesktopApp/README.md) - Traditional desktop
application sample (using WPF).
[OAuthConsoleApp](OAuthConsoleApp/README.md) - Command Line Interface (CLI)
console application sample.
All samples achieve the same end result of authenticating the user in the
system browser, but with environment-specific optimizations.
Google Documentation
--------------------
The protocols referenced in this sample are documented here:
- [OAuth 2.0](https://developers.google.com/identity/protocols/OAuth2)
- [Using OAuth 2.0 for Mobile and Desktop Applications](https://developers.google.com/identity/protocols/OAuth2InstalledApp)
Support
-------
If you have a question related to these samples, or Google OAuth in general,
please ask on Stack Overflow with the `google-oauth` tag
https://stackoverflow.com/questions/tagged/google-oauth
If you've found an error in this sample, please file an issue:
https://github.com/googlesamples/oauth-apps-for-windows/issues
Patches are encouraged, and may be submitted by forking this project and
submitting a pull request through GitHub.
Advanced Reading
----------------
The protocols and best practices used and implemented in these samples are
defined by RFCs. These expert-level documents detail how the protocols work,
and explain the reasoning behind many decisions, such as why we send a
`code_challenge` on the Authorization Request for a native app.
- [RFC 8252: OAuth 2.0 for Native Apps](https://tools.ietf.org/html/rfc8252)
- [RFC 6749: OAuth 2.0](https://tools.ietf.org/html/rfc6749)
- [RFC 6750: OAuth 2.0 Bearer Token Usage](https://tools.ietf.org/html/rfc6750)
- [RFC 6819: OAuth 2.0 Threat Model and Security Considerations](https://tools.ietf.org/html/rfc6819)
- [RFC 7636: OAuth 2.0 PKCE](https://tools.ietf.org/html/rfc7636)
License
-------
Copyright 2016 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.