diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-05-05 10:03:10 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-05-05 10:03:10 +0000 |
| commit | e9998320678d5bc9fa7963cb8eff5939c52403a9 (patch) | |
| tree | 704a225dc049fc70905f0c06d237862f6a5608cb /python-requests-oauth2.spec | |
| parent | 9a5e156f6c166c76ff3d3874b52f0e362a5a30b3 (diff) | |
automatic import of python-requests-oauth2openeuler20.03
Diffstat (limited to 'python-requests-oauth2.spec')
| -rw-r--r-- | python-requests-oauth2.spec | 501 |
1 files changed, 501 insertions, 0 deletions
diff --git a/python-requests-oauth2.spec b/python-requests-oauth2.spec new file mode 100644 index 0000000..8a77efd --- /dev/null +++ b/python-requests-oauth2.spec @@ -0,0 +1,501 @@ +%global _empty_manifest_terminate_build 0 +Name: python-requests-oauth2 +Version: 0.3.0 +Release: 1 +Summary: OAuth2 support to Python-Requests HTTP library. +License: BSD +URL: http://github.com/maraujop/requests-oauth2 +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/52/dc/01c3c75e6e7341a2c7a971d111d7105df230ddb74b5d4e10a3dabb61750c/requests-oauth2-0.3.0.tar.gz +BuildArch: noarch + + +%description +# requests-oauth2 + +[](https://pypi.python.org/pypi/requests-oauth2) + +OAuth v2.0 support for +[kennethreitz](https://github.com/kennethreitz)'s well-known +[Requests](https://github.com/kennethreitz/requests) library. + +This library wants to provide the simplest and easiest way to do +OAuth2 in Python. OAuth2 is much easier to do than old OAuth1.0, and +likewise this library is simple, free of cruft, and practical in +everyday use. If you are looking for a way of doing OAuth 1.0, see +[requests-oauth](https://github.com/maraujop/requests-oauth). + +Authors: see [AUTHORS](/AUTHORS). + +License: BSD + +Examples: with [Flask](/examples/web_flask.py). + +## OAuth2 web app flow - the theory + +Skip this if you know how OAuth2 works. + +1. Your web app (*Foo*) allows users to log in with their *Qux* + account. *Qux* here is a service provider; they gave you a **client + ID** and a **secret key**, which *Foo* stores somewhere on the + backend. *Qux* and *Foo* pre-agree on some **redirect URI**. +2. User visits *Foo*'s login screen, e.g. + `https://www.foo.example/login` +3. *Foo* redirects users to *Qux*'s **Authorization URL**, e.g. + `https://api.qux.example/oauth/authorize` +4. User is presented with *Qux*'s **consent screen**, where they + review the **scope** of requested permissions, and either allow or + deny access. +5. Once access is granted, *Qux* redirects back to *Foo* via the + **redirect URI** that they both agreed upon beforehand, supplying + the **code**. +6. *Foo* exchanges the **code** for an **access token**. The access + token can be used by *Foo* to make API calls to *Qux* on user's + behalf. + +## Usage example + +Look into the [examples directory](/examples) for fully integrated, +working examples. + +Some providers are included out of the box, but adding more is quite +easy. In this example, we'll get started with Google. + +You will find **Client ID** & **secret** (point 1 above) in your +[Google API console](https://console.cloud.google.com/apis/credentials). + +You must choose the **redirect URI**, which must be handled by your +web app. + +```python +from requests_oauth2.services import GoogleClient +google_auth = GoogleClient( + client_id="your-google-client-id", + client_secret="super-secret", + redirect_uri="http://localhost:5000/google/oauth2callback", +) +``` + +When the user visits the login page (point 2), we'll build an +**authorization URL** (point 3) that will direct the user to Google's +**consent screen**, asking to grant the specified **scopes** (point +4): + +```python +authorization_url = google_auth.authorize_url( + scope=["email"], + response_type="code", +) +``` + +Once the user clicks "allow", Google will redirect them to the +**redirect URI** (point 5), which will include the **code** as one of +the query string parameters: + + http://localhost:5000/google/oauth2callback?code=... + +The code will be used to request an **access token** (point 6), +necessary for all following requests to the API: + +```python +code = get_request_parameter("code") # this depends on your web framework! +data = google_auth.get_token( + code=code, + grant_type="authorization_code", +) +``` + +You can store it somewhere for later use, e.g. in the session, or in +the database: + +```python +session["access_token"] = data["access_token"] +``` + +The exact method for supplying the **access token** varies from one +provider to another. One popular method (supported by Google) is via +the Bearer header. There's a helper shortcut for this: + +```python +from requests_oauth2 import OAuth2BearerToken + +with requests.Session() as s: + s.auth = OAuth2BearerToken(access_token) + r = s.get("https://www.googleapis.com/plus/v1/people/me") + r.raise_for_status() + data = r.json() +``` + +Other providers, such as Facebook, allow the access token to be passed +as a request parameter (in the query string). You would so something +like this: + +```python +from requests_oauth2 import OAuth2BearerToken + +with requests.Session() as s: + s.params = {"access_token": response["access_token"]} + r = s.get("https://graph.facebook.com/me") + r.raise_for_status() + data = r.json() +``` + +## Interesting readings + +* Using OAuth 2.0 to Access Google APIs: + <https://developers.google.com/accounts/docs/OAuth2> + +* Using OAuth 2.0 for Web Server Applications Google APIs: + <https://developers.google.com/accounts/docs/OAuth2WebServer> + +* OAuth 2.0 in Facebook: + <http://developers.facebook.com/docs/authentication/> + +* Github OAuth 2.0 usage: + <https://developer.github.com/apps/building-oauth-apps/> + +* You can use postbin for testing webhooks: <http://www.postbin.org/> + +%package -n python3-requests-oauth2 +Summary: OAuth2 support to Python-Requests HTTP library. +Provides: python-requests-oauth2 +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-requests-oauth2 +# requests-oauth2 + +[](https://pypi.python.org/pypi/requests-oauth2) + +OAuth v2.0 support for +[kennethreitz](https://github.com/kennethreitz)'s well-known +[Requests](https://github.com/kennethreitz/requests) library. + +This library wants to provide the simplest and easiest way to do +OAuth2 in Python. OAuth2 is much easier to do than old OAuth1.0, and +likewise this library is simple, free of cruft, and practical in +everyday use. If you are looking for a way of doing OAuth 1.0, see +[requests-oauth](https://github.com/maraujop/requests-oauth). + +Authors: see [AUTHORS](/AUTHORS). + +License: BSD + +Examples: with [Flask](/examples/web_flask.py). + +## OAuth2 web app flow - the theory + +Skip this if you know how OAuth2 works. + +1. Your web app (*Foo*) allows users to log in with their *Qux* + account. *Qux* here is a service provider; they gave you a **client + ID** and a **secret key**, which *Foo* stores somewhere on the + backend. *Qux* and *Foo* pre-agree on some **redirect URI**. +2. User visits *Foo*'s login screen, e.g. + `https://www.foo.example/login` +3. *Foo* redirects users to *Qux*'s **Authorization URL**, e.g. + `https://api.qux.example/oauth/authorize` +4. User is presented with *Qux*'s **consent screen**, where they + review the **scope** of requested permissions, and either allow or + deny access. +5. Once access is granted, *Qux* redirects back to *Foo* via the + **redirect URI** that they both agreed upon beforehand, supplying + the **code**. +6. *Foo* exchanges the **code** for an **access token**. The access + token can be used by *Foo* to make API calls to *Qux* on user's + behalf. + +## Usage example + +Look into the [examples directory](/examples) for fully integrated, +working examples. + +Some providers are included out of the box, but adding more is quite +easy. In this example, we'll get started with Google. + +You will find **Client ID** & **secret** (point 1 above) in your +[Google API console](https://console.cloud.google.com/apis/credentials). + +You must choose the **redirect URI**, which must be handled by your +web app. + +```python +from requests_oauth2.services import GoogleClient +google_auth = GoogleClient( + client_id="your-google-client-id", + client_secret="super-secret", + redirect_uri="http://localhost:5000/google/oauth2callback", +) +``` + +When the user visits the login page (point 2), we'll build an +**authorization URL** (point 3) that will direct the user to Google's +**consent screen**, asking to grant the specified **scopes** (point +4): + +```python +authorization_url = google_auth.authorize_url( + scope=["email"], + response_type="code", +) +``` + +Once the user clicks "allow", Google will redirect them to the +**redirect URI** (point 5), which will include the **code** as one of +the query string parameters: + + http://localhost:5000/google/oauth2callback?code=... + +The code will be used to request an **access token** (point 6), +necessary for all following requests to the API: + +```python +code = get_request_parameter("code") # this depends on your web framework! +data = google_auth.get_token( + code=code, + grant_type="authorization_code", +) +``` + +You can store it somewhere for later use, e.g. in the session, or in +the database: + +```python +session["access_token"] = data["access_token"] +``` + +The exact method for supplying the **access token** varies from one +provider to another. One popular method (supported by Google) is via +the Bearer header. There's a helper shortcut for this: + +```python +from requests_oauth2 import OAuth2BearerToken + +with requests.Session() as s: + s.auth = OAuth2BearerToken(access_token) + r = s.get("https://www.googleapis.com/plus/v1/people/me") + r.raise_for_status() + data = r.json() +``` + +Other providers, such as Facebook, allow the access token to be passed +as a request parameter (in the query string). You would so something +like this: + +```python +from requests_oauth2 import OAuth2BearerToken + +with requests.Session() as s: + s.params = {"access_token": response["access_token"]} + r = s.get("https://graph.facebook.com/me") + r.raise_for_status() + data = r.json() +``` + +## Interesting readings + +* Using OAuth 2.0 to Access Google APIs: + <https://developers.google.com/accounts/docs/OAuth2> + +* Using OAuth 2.0 for Web Server Applications Google APIs: + <https://developers.google.com/accounts/docs/OAuth2WebServer> + +* OAuth 2.0 in Facebook: + <http://developers.facebook.com/docs/authentication/> + +* Github OAuth 2.0 usage: + <https://developer.github.com/apps/building-oauth-apps/> + +* You can use postbin for testing webhooks: <http://www.postbin.org/> + +%package help +Summary: Development documents and examples for requests-oauth2 +Provides: python3-requests-oauth2-doc +%description help +# requests-oauth2 + +[](https://pypi.python.org/pypi/requests-oauth2) + +OAuth v2.0 support for +[kennethreitz](https://github.com/kennethreitz)'s well-known +[Requests](https://github.com/kennethreitz/requests) library. + +This library wants to provide the simplest and easiest way to do +OAuth2 in Python. OAuth2 is much easier to do than old OAuth1.0, and +likewise this library is simple, free of cruft, and practical in +everyday use. If you are looking for a way of doing OAuth 1.0, see +[requests-oauth](https://github.com/maraujop/requests-oauth). + +Authors: see [AUTHORS](/AUTHORS). + +License: BSD + +Examples: with [Flask](/examples/web_flask.py). + +## OAuth2 web app flow - the theory + +Skip this if you know how OAuth2 works. + +1. Your web app (*Foo*) allows users to log in with their *Qux* + account. *Qux* here is a service provider; they gave you a **client + ID** and a **secret key**, which *Foo* stores somewhere on the + backend. *Qux* and *Foo* pre-agree on some **redirect URI**. +2. User visits *Foo*'s login screen, e.g. + `https://www.foo.example/login` +3. *Foo* redirects users to *Qux*'s **Authorization URL**, e.g. + `https://api.qux.example/oauth/authorize` +4. User is presented with *Qux*'s **consent screen**, where they + review the **scope** of requested permissions, and either allow or + deny access. +5. Once access is granted, *Qux* redirects back to *Foo* via the + **redirect URI** that they both agreed upon beforehand, supplying + the **code**. +6. *Foo* exchanges the **code** for an **access token**. The access + token can be used by *Foo* to make API calls to *Qux* on user's + behalf. + +## Usage example + +Look into the [examples directory](/examples) for fully integrated, +working examples. + +Some providers are included out of the box, but adding more is quite +easy. In this example, we'll get started with Google. + +You will find **Client ID** & **secret** (point 1 above) in your +[Google API console](https://console.cloud.google.com/apis/credentials). + +You must choose the **redirect URI**, which must be handled by your +web app. + +```python +from requests_oauth2.services import GoogleClient +google_auth = GoogleClient( + client_id="your-google-client-id", + client_secret="super-secret", + redirect_uri="http://localhost:5000/google/oauth2callback", +) +``` + +When the user visits the login page (point 2), we'll build an +**authorization URL** (point 3) that will direct the user to Google's +**consent screen**, asking to grant the specified **scopes** (point +4): + +```python +authorization_url = google_auth.authorize_url( + scope=["email"], + response_type="code", +) +``` + +Once the user clicks "allow", Google will redirect them to the +**redirect URI** (point 5), which will include the **code** as one of +the query string parameters: + + http://localhost:5000/google/oauth2callback?code=... + +The code will be used to request an **access token** (point 6), +necessary for all following requests to the API: + +```python +code = get_request_parameter("code") # this depends on your web framework! +data = google_auth.get_token( + code=code, + grant_type="authorization_code", +) +``` + +You can store it somewhere for later use, e.g. in the session, or in +the database: + +```python +session["access_token"] = data["access_token"] +``` + +The exact method for supplying the **access token** varies from one +provider to another. One popular method (supported by Google) is via +the Bearer header. There's a helper shortcut for this: + +```python +from requests_oauth2 import OAuth2BearerToken + +with requests.Session() as s: + s.auth = OAuth2BearerToken(access_token) + r = s.get("https://www.googleapis.com/plus/v1/people/me") + r.raise_for_status() + data = r.json() +``` + +Other providers, such as Facebook, allow the access token to be passed +as a request parameter (in the query string). You would so something +like this: + +```python +from requests_oauth2 import OAuth2BearerToken + +with requests.Session() as s: + s.params = {"access_token": response["access_token"]} + r = s.get("https://graph.facebook.com/me") + r.raise_for_status() + data = r.json() +``` + +## Interesting readings + +* Using OAuth 2.0 to Access Google APIs: + <https://developers.google.com/accounts/docs/OAuth2> + +* Using OAuth 2.0 for Web Server Applications Google APIs: + <https://developers.google.com/accounts/docs/OAuth2WebServer> + +* OAuth 2.0 in Facebook: + <http://developers.facebook.com/docs/authentication/> + +* Github OAuth 2.0 usage: + <https://developer.github.com/apps/building-oauth-apps/> + +* You can use postbin for testing webhooks: <http://www.postbin.org/> + +%prep +%autosetup -n requests-oauth2-0.3.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-requests-oauth2 -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 0.3.0-1 +- Package Spec generated |
