PCAP Flashcards
State the differences between a compiled language and an interpreted language.
Compiled language:
After compilation, the program can be freely distributed without the need of the interpreter. You must have a compiler for each type of system. Faster execution. Examples: C, C++, Go.
Interpreted language:
The translation is done each time the program runs. The interpreter must be installed in all the computers to make the code run. Slower execution. Examples: PHP, Ruby, Python, Java.
How do you use binary, hexadecimal and scientific notation in Python?
Binary: 0bnnnnnnn
Hexadecimal: 0xnnnnnnn
Scientific notation: nEn, example: 3E8
Large numbers: use underscores (_) to separate big chunks of numbers
What are the three different ways you can specify a range
in Python?
-
range(2,8,3): range(start, end, increment)
. The end does not touch
List two ways in which you can slice a sequence in Python:
-
Slice function: (,)
- Returns a slice object similar to a range function.
- You must specify the start, end and step.
lista = [i for i in range(10)]
x = slice(start=None, end, step=None)
sliced = lista[x]
-
Bracket slicing - Index Operator: (:)
lista = [i for i in range(10)]
x = lista [start : end : step]
Calculate the module of the following operations:
4 % 6 =
2.33 % 2.1 =
10 % 3 =
RAr(AbArAb)

What are the different tuple methods?
Leia Meditated Meanwhile Surfers Inhaled Clever Irishmen.
len, min, max, slice, in, count, index
List two ways in which you can declare a tuple.
-
Parenthesis:
my_tuple = (1, )
(s1, s2) = (1, 2)
-
No parenthesis:
my_tuple = 1, 2, 3
s1, s2 = 1, 2
random
Module most used functions and methods:
Strong Robocop Romanced Round Croutons Slowly
Seed, Random, Randrange, Randint, Choice, Sample
Useful methods of the datetime.date
class:
-
.weekday():0
: Monday -
.isoweekday(): 1
: Monday (ISO) -
.isoformat():
string : YYYY-MM-DD -
.replace():
replaces the specified parameters. -
.strftime():
readable string format.
Useful methods of the datetime.datetime
class:
.today(), .now()
.strftime()
.strptime()
-
.fromisoformat():
returns a datetime coming from a string in ISO format .isoformat()
-
.combine():
combines a date and a time .replace()
Enlist all the different formatting styles that can be used with strftime
:

Useful methods of the Calendar.Calendar
class:
Generators:
-
.itermonthdates(year, month):
datetime objects. -
.itermonthdays(year, month):
int (day#). -
.itermonthdays2(year, month):
tuple (day#, weekday#) -
.itermonthdays3(year, month):
tuple (year#, month#, day#) -
.itermonthdays4(year, month):
tuple (year#, month#, day#, weekday#)
Lists:
-
monthdatescalendar(year, month):
datetime (separated in weeks). -
monthdayscalendar(year,month):
int (day#) (separated in weeks). -
monthdays2calendar(year,month):
tuple (day#, weekday#) (separated in weeks).
What is a Python generator?
- collections
- ⇒ Iterator()
- ⇒ Generator (yield, list-like)
- ⇒ [], (), {}, set()
- ⇒ str(), b””, bytearray(), range(), map()
- ⇒ Iterator()
-
Generator:
-
yield
statement:
-
def gen():
x = 0
for x in range(10):
if x%2 :
yield x
- list-like:
it = (x for x in range(10) if x % 2)
(PARENTHESIS)
tkinter
How do you create the root window in an OOP program?
root = tkinter.Tk()
app = Application(root)
-
App:
def \_\_init\_\_(Frame):
super().\_\_init\_\_()
self.main = tkinter.Frame
- Pack
self.main
and this will be the master of all widgets.
tkinter
What is the process to create a RadioButton
?
1. Create a variable: tkinter.BooleanVar, DoubleVar, IntVar, StringVar.
- Set a default value for it.
- Create the radiobutton:
r1 = tkinter.RadioButton(master, variable =, value=,...)
- Define the function that sets the
tkinter
variable.
tkinter:
What is the process for creating a Calendar
?
pip install tkcalendar
import tkcalendar.
tcal = tkcalendar.Calendar(master, )
-
date_temp = tcal.get_date():
String
tkinter:
What is the process to create image widgets?
pip install Pillow
- Imports:
import PIL
from PIL import ImageTk, Image
- Create image object:
ima = ImageTk.PhotoImage(Image.open("whatever.jpg"))
ima = ImageTk.BitmapImage(Image.open("whatever.bmp"))
- Use the image:
lbl = tkinter.Label(master, image=ima)
What is the process to use gspread
?
-
Google Cloud Console:
https://console.cloud.google.com/
- API’s and services.
- Create Credentials ⇒ Create a service account (Key type = JSON).
- Share the Google Sheet with the client’s email.
-
Code:
-
pip:
pip install oauth2client
-
imports:
import gspread
from oauth2client.service_account import ServiceAccountCredentials
-
Create creds:
creds = ServiceAccountCredentials.from_json_keyfile_name("")
client = gspread.authorize(creds)
-
Open a worksheet:
sheet = client.open("name")
worksheet1 = sheet.worksheet("name")
-
Using gspread:
-
Get a value:
val = ws.cell(1,2)
vals = ws.row_values(2)
-
Update a value:
ws.update_cell(1,2, "hello")
ws.update("A1:B1", [[1, 2],[3, 4]])
-
Get a value:
-
pip:
What is the meaning of API?
Application Programming Interface
What are the basic principles of a REST API?
REpresentational State Transfer.
It has 6 constraints (LUCCCS):
-
Layered:
- Intermediate dedicated servers(security, load balancing), client does not know to which server it’s communicating.
-
Uniform Interface:
-
Resource Based:
- Server sends a representation of resources. Uniquely identified resource.
-
Self-descriptive Messages:
- Each message contains everything needed.
-
Hypermedia (HATEOAS):
- Body, request - response headers, URIS.
-
Resource Based:
-
Cacheable:
- The client caches info to decrease client-server interactions. Improves client performance.
-
Client server architecture:
- Server: data storage. Client: UI. HTTP requests, client portability, client-server independence.
-
Code on demand (optional)
- Server returns code to the client (Javascript, Java applets).
-
Statelessness:
- Each client request should have the creds, so no session keeps open by the server.
What does OAuth stand for?
Open Authorization
(HTTP requests)
What types of OAuth grants exist?
-
Resource owner password credentials:
- Resource owner supplies creds.
- Unsafe.
-
Client credentials:
- Resources are owned by the client itself.
-
Authorization code:
- Most commonly used.
- Auth server issues an auth code, then access token - refresh token.
- Resource owner credentials, never shared.
-
Implicit:
- No Oauth code is issued, only access tokens.
How do you use map()
?
- Transform a set of items without the need for iteration in one single expression:
- map_object = map (callable, iterable)
-
Callable (function):
- Class constructors: Class()
- User defined function.
- Built-in function.
-
lambda
functions.
-
Example:
mapa = map(lambda x,y: x-y, [5,5,5],[1,3,5])
>> 4 2 0
How do you use a lambda
function? What are they useful for?
lambda arguments(n, *): expression(just 1, no statements)
- Wherever a regular function object is allowed (
lambda
: syntactic sugar, anonymous function). - Functional paradigm, often used with
map(), filter(), reduce().
What is a JSON file?
JavaScript Object Notation
What is the basic process for a pickle
file?
- Python specific.
- Read:
with open("file.pickle", "rb") as file:
data = pickle.load(file)
- Write:
with open("file.pickle", "wb") as file:
pickle.dump(any_object, file)
What are the most used types of HTTP request methods?
-
GET: request data.
- /test/demo_form.php?name1=value1&name2=value2
-
POST: send data to a server
- data sent is stored in the request body of the HTTP request
- HEAD: response identical to that of a GET request, but without the response body.
- DELETE /file.html HTTP/1.1
What are the basic elements of an API?
- Most of the time, API means REST API.
What does GIT stand for?
Global Information Tracker
What are other types of version control systems?
-
Azure DevOps:
- Team Foundation Version Control (TFVC) or Git
- Entire application lifecycle:
- Reporting.
- Requirements management.
- Project management (for both agile software development and waterfall teams)
- Automated builds
- Testing
- Release management.
-
Apache Subversion:
- Versioning and revision control system distributed as open source.
-
Perforce:
- Software used for developing and running applications, including version control software, web-based repository management, developer collaboration, application lifecycle management, web application servers, debugging tools and Agile planning software (DevOps).
-
Mercurial:
- Free, distributed source control management tool.
- Mainly Python.
- $ hg clone “URL”, $ hg add (new files)
What is the basic process for creating a GIT repo?
-
Download GIT.
- git-scm.com
- Init repo:
$ git init
- Create a .gitgnore file.
- First Time config:
$ git config --global user.name "name"
$ git config --global user.email "something@mail.com"
- Commit:
$ git add filename.txt, $ git add .
$ git commit -m "description"
$ git status
$ git log
What is a git branch?
-
$ git branch testing
- Diverge from the main line.
- Default branch name:
master
(git init
creates it) - HEAD: Pointer to current branch
-
Commit object:
- Pointer to snapshot,
- Author’s name and email address,
- Message,
- Pointers to parent or parents:
- Initial commit: 0.
- Normal commit: 1
- Merge of two or more branches: Multiple parents.
-
Switch to branch:
$ git checkout testing
-
Create and switch:
$ git switch -c new-branch.
-c, --create
-
$ git log
and branches:- Commit history for branch:
$ git log branch_name
- All branches:
$ git log --all
- Commit history for branch:
How do you return to a specific snapshot of a GIT repo?
$ git checkout 40fd555
$ git checkout branch_name

What is the HEAD in a GIT repo?
- HEAD: Pointer to current branch.

How do you set up a remote repo?
- Create a GitHub account.
- Create a new repository.
- In the Local repo:
$ git remote add origin https://github.com/oarpavon99/whatever.git
- Local ⇒ Remote:
$ git push -u origin master
$ git push -u(save changes) origin(where?) master(branch)
What are the different types of tags that you can include in a GIT version?
$ git tag
-
-l:
list tags that match a pattern-l "v1.8.5*"
-
-lw
: lightweight tag (≈ branch) -
-d
: delete tag-d v1.4
-
-
- Annotated:
-
$ git tag -a v1.4 -m "my version 1.4"
-
$ git tag -a v1.2 9fceb02(checksum)
(tag later)
-
-
-
Show tag:
-
$ git show
- Tagger info, date of tag, tag message
- Commit info.
-
-
Checkout tag:
-
$ git checkout v2.0.0
- No new commits (unreachable)
-
-b version2 v2.0.0
: new branch ‘version2
’
-
How do you remove a file from a remote repo?
-
git rm
- Remove files.-
--cached
: stage for removal, not working directory -
-r
: recursive removal of working directory
-
- To remove it from a remote repo(Github): ` `
git rm --cached
git add
git commit -m ""
-
git push -u origin master / git push
` `
How do you remove a file from a local repo?
git rm --cached
git add
git commit -m ""
What is merge used for?
What is the difference between a generator and an iterator?
- A generator is a subclass of an iterator that has an easier syntax. Limited functionality, not so general as
collections.Iterator
- There are two types:
- Yield statement.
- List like generators.
What is the iterator protocol?
An iterator class definition should have the following 3 methods to comply with the protocol:
-
\_\_iter\_\_()
:-
return self
(the iterator)
-
-
\_\_next\_\_()
:- What happens in the next iteration?
-
raise StopIteration:
- When should the iterations stop?
- Must be raised by
\_\_next\_\_
method.
What are the 4 pillars of OOP?
-
Encapsulation:
- class:
- variables
- methods
- information hiding: __private, _protected, public
- GET / SET methods
- class:
-
Abstraction:
- User interacts with methods, not implementation
-
Polymorphism:
- Static Polymorphism:
- same name, different behavior
- type
- number
- order
- DynamicPo
-
Inheritance:
- whatever
- whatever

What do you use the reduce()
function for?
functools.reduce(function (two args), iterable)
- Applies a function in a cumulative manner yielding one final value.
- More Pythonic solutions:
sum(), math.prod(), max(), min(), all(), any()
What do you use the filter()
function for?
fil = filter(function, iterable)
- Returns a that can be converted to a list.
- The filter object contains the items of the function returns
True
.
How do you define a custom Exception?
Define custom Exceptions:
class CustomException(Exception):
def \_\_init\_\_ (self, msg):
super().\_\_init\_\_(msg)
Raise custom Exceptions:
def checkforexceptions(whatever):
if condition:
raise Exception
How do you call a custom exception?
Raise custom Exceptions:
def checkforexceptions(whatever):
if condition:
raise Exception
What would you use for-else or while-else loops for?
Can you pass arguments to an Exception?
Classify the Exceptions:
Base Exception (not meant to be directly inherited by user-defined classes)
⇒ Exception (built-in, non-system-exiting exceptions)
⇒ ArithmethicError
ZeroDivisionError, FloatingPointError
⇒ AssertionError
⇒ StopIteration
⇒ ValueError
Right type but an inappropriate value.
⇒ TypeError
Operation or function is applied to an object of inappropriate type.
Raised by user code to indicate that an attempted operation on an object is not supported.
⇒ LookupError
⇒ IndexError
Sequence subscript is out of range.
⇒ KeyError
Dictionary key is not found.
⇒ OSError
⇒ FileExistsError
errno EEXIST
⇒FileNotFoundError
errno ENOENT
⇒ KeyboardInterrupt
⇒ SystemExit
What is a shell?
- Computer program which exposes an operating system’s services to a human user or other program.
- For example:
- Windows Shell (Windows’ GUI).
- CLI shells (Command Line Interface): Bash (Unix) or CMD prompt in Windows.
What is bash?
- Unix CLI shell.
- Default login shell for most Linux distributions since 1989.
- Replaced Bourne Shell (Bourne Again sh - bash (sh: name of the language)
What is syntactic sugar?
It makes the language “sweeter” for human use: things can be expressed more clearly, more concisely, or in an alternative style that some may prefer.
What are some useful examples of syntactic sugar?
`x = something if condition else otherthing` # python ternary
`a += 1` # equivalent to a = a + 1
`1 < x < 10` # equivalent to 1 \< x and x \< 10
`[x for x in range(10)]` # List comprehension
What is an OrderedDict, and what is the difference with a regular Dictionary?
- Create:
from collections import OrderedDict
dic = OrderedDict()
- Methods:
dic.popitem()
dic.move_to_end(key)
- Equality:
- Checks for keys and values but also order of insertion.
- New operators for dictionaries in Python 3.9:
-
|
merge -
|=
update
-
What are the uses of the yield
statement?
- When resumed, the function remember where it was before the last
yield
run. - Similar to
return
:- Return sends a specified value back to its caller whereas
yield
can produce a sequence of values.
- Return sends a specified value back to its caller whereas
-
yield
expression is used when defining a generator function and thus can only be used inside def. -
yield
expressions are allowed anywhere in atry
construct.
What is a bytearray
? What do you use them for?
- Always created by calling the constructor:
bytearray(), bytearray(10), bytearray(range(20)), bytearray(b'Hi!').
- Basic building block of a binary file: pictures, music, video, etc.
-
Methods:
bytes.decode(encoding="utf-8", errors="str")
-
# Regular sequence methods:
bytearray.count(sub[, start[, end]])
bytes.replace(old, new[, count])
bytes.find(sub[, start[, end]])
bytes.index(sub[, start[, end]])
bytes.lstrip([chars])
bytes.rsplit(sep=None, maxsplit=-1)
bytes.isalpha()
What are the different file open modes?
with open("file.ext", "xt"/"rt") as file:
- XARW:
- “x”: create
- “a”: append
- “r”: read
- “w”: write
- “t”: Text Mode
- “b”: Binary Mode
- ”+”: Open to update
What are the most common HTTP response status codes?
- Informational responses (100–199)
- Successful responses (200–299)
-
200 OK:
- GET: The resource has been fetched and is transmitted in the message body.
- HEAD: The entity headers are in the message body.
- PUT or POST: The resource describing the result of the action is transmitted in the message body.
- TRACE: The message body contains the request message as received by the server.
- 201 Created: Resource created.
-
200 OK:
- Redirects (300–399)
- Client errors (400–499):
- 400 Bad Request: client error (e.g., malformed request syntax, deceptive request routing).
- 401 Unauthorized: request has not been applied because it lacks valid authentication credentials for the target resource.
- 403 Forbidden: server understood the request but refuses to authorize it.
- 404 Not Found: server can’t find the requested resource. Links that lead to a 404 page are often called broken or dead links.
- Server errors (500–599)
- 500 Internal Server Error: Server encountered an unexpected condition that prevented it from fulfilling the request. Generic “catch-all” response. Usually, this indicates the server cannot find a better 5xx error code to response.
- 503 Service Unavailable: Server is not ready to handle the request. Common causes are a server that is down for maintenance or that is overloaded.
Useful methods in OS module?
- os:
Rats Stabbed Wieners.
* `os.rename("old_file_name", "new_file_name")` * `os.stat("file_ name"): ` * `st_size = # size in bytes.` * `st_mtime = # last modified (timestamp).` ` ` * `os.walk(top="path"): ` * `# returns a tuple with the tree structure for iteration.` ` ` * **os.path:**
Beasts Discussed Indecent Spielberg.
* `os.path.basename("path")` * `os.path.dirname("path")` * `os.path.isdir("path")` * `os.path.splittext("path"): ` * `# returns a list with the path and the file extension.`
Where do you find the Path
class?
from pathlib import Path
- A subclass of PurePath
- Correspondence to tools in the
os
module:Path.cwd()
Path.stat()
Path.exists()
Path.is_dir()
Path.mkdir()
Path.open()
Path.touch()
-
p = Path(direccion.name)
with open(p, "rt", encoding="utf-8") as file:
Useful methods in CSV
module?
-
csv.reader(csvfile, dialect='', **fmtparams)
- Reader object which will iterate over lines.
-
csvfile
: any object that supports the iterator protocol and returns a string. - Dialect : ‘excel’, excel-tab’, ‘unix’ (‘\n’ as line terminator and quoting all fields)
csvreader.\_\_next\_\_()
-
csv.writer(csvfile, dialect='', **fmtparams)
- csvwriter.writerow(row)
**fmtparams
= Dialects and Formatting Parameters
What are the different characteristics of the 3 programming paradigms?
-
Procedural programming, structured programming –
- Specifies the steps a program must take to reach a desired state.
- Use of global variables.
-
Functional programming –
- Treat programs as evaluating mathematical functions and avoids state and mutable data.
- Functions pass values, less global variables.
-
Object-oriented programming (OOP) –
- Organizes programs as objects: instances, data structures consisting of datafields and methods together with their interactions.
What are dunder methods?
- Special, predefined methods. (double underscore: __init__ or __str__).
- There are hundreds of Special methods available to implement in Python.
- The special methods provide a common API that allows developers to create interactive classes.
- Create classes with native data structures behavior.
-
Object Initialization:
\_\_init\_\_
-
Object Representation:
-
\_\_repr\_\_
: The “official” string representation of an object. This is how you would make an object of the class. The goal of __repr__ is to be unambiguous. -
\_\_str\_\_
: The “informal” or nicely printable string representation of an object. This is for the enduser.
-
-
Iteration:
-
Sequences:
-
\_\_len\_\_
: >>> len(obj) -
\_\_getitem\_\_
: >>> obj[1]
-
-
\_\_reversed\_\_
: reversed(obj)
-
Sequences:
-
Arithmetic Operators:
-
\_\_add\_\_
: >>> 1 + 2, (also: -, *, /, //)
-
-
Callable:
-
\_\_call\_\_
: >>> obj()
-
-
Delete:
-
\_\_del\_\_
: >>> del(obj)
-
Useful list
methods?
-
Sequences: support the
\_\_len\_\_
and\_\_getitem\_\_
methods. Lists, tuples, ranges, strings, bytes.-
Common Sequence methods (lists, tuples, ranges, strings, bytes- b’‘-ASCII):
in, +, *, s[i], len(), index(), count(), min(), max(), sort()
-
Mutable Sequence methods (lists, bytearray):
- Direct assignation:
s[i] = x
del(), clear(), copy()
append(), insert(i, x), pop([i]), remove(), reverse()
- Direct assignation:
-
Common Sequence methods (lists, tuples, ranges, strings, bytes- b’‘-ASCII):
- List supports both sets of instructions.
How do you turn off the computer using command line?
> shutdown /s /t
: xxx time in seconds
> shutdown /p
: Immediate shutdown
> shutdown /a
: Abort shutdown
What do you use the global
keyword for?
What is the difference between parameters and arguments?
What is argument tuple packing?
What is argument tuple unpacking?
What is name mangling?
What is the precedence order for the 3 types of ways of passing arguments to a function or method?
Create some list comprehension arrays:
- 4 rows x 5 columns
- 1 row x 7 columns
- 3 rows x 10 columns
What is a \_\_pycache\_\_
file? What is the name format for it?
What is the special variable \_\_name\_\_
used for?
How do you raise an assertion error?
-
assert expression1, expression2 OR "TEXT"
- Debugging assertions into a program.
-
raise AssertionError("Hola amiguitos")
>> AssertionError: Hola amiguitos
What is the expected output of the following code snippet?
assert False
assert False
>> AssertionError
assert True
>>
What is Unicode?
- Backward compatible with ASCII. ≈ 1 million Code points.
- Processing, storage and interchange of text data in any language. U+20AC, U+0800
- Unicode Transformation Formats (UTF): UTF-8, UTF-16, and UTF-32.
- 95% of websites as of 2020. Unicode Consortium.
What is UTF-8?
- 1,112,064 code points
- Lower numerical values Code Points (frequently used) ⇒ fewer bytes.
- World Wide Web Consortium recommends UTF-8 as the default encoding in XML and HTML
What are the restricted keywords in Python?
- 35 keywords:
- from, import, with, as
- class, def, lambda, global, local
- for, while, if, elif, else, try, except, assert, raise, finally,
- pass, continue, break, return, yield
- and, or, not, is, in, non, del, True, False, None
- await, async
Please enlist all the different list comprehension - like data structures.
-
Set comprehension (no duplicates, no particular order):
>>> quote = "life, uh, finds a way"
>>> unique_vowels = {i for i in quote if i in 'aeiou'}
-
Dictionary comprehensions:
>>> squares = {i: i * i for i in range(10)}
Types of lambda
expressions:
lambda [parameter_list] : expression
-
Characteristics:
- Anonymous function
- Syntactic Sugar.
- Wherever a function object is allowed.
- Functional paradigm.
-
def (parameters):
return expression
Most useful options for pip install
:
pip install x_package == version
-
-U, --upgrade
: upgrade to the newest version -
--force-reinstall
: reinstall all packages (even if up-to-date) -r, --requirement
What is the difference between index()
and find()
for a string?
- Both have an identical syntax:
"string".index("substring", start(int), end(int))
"string".find("substring", start(int), end(int))
- If
"substring"
is not found:-
index
returnsValueError
-
find
returns-1
-
What does isinstance()
do?
-
isinstance(object, classinfo)
-
True
: ifobject
is instance or subclass ofclassinfo
-
What is a closure? Why would I want to use them?
Most frequent Linux errors:
- 2 - ENOENT: No such file or directory
- 9- EBADF: Bad file number (unopened stream)
- 13 - EACCES: Permission denied (read only)
- 17 - EEXIST: File exists
- 21 - EISDIR: Is a directory
- 24 - EMFILE: Too many open files
- 27 - EFBIG: File too large
- 28 - ENOSPC: No space left on device
What is errno
?
- Module standard errno system symbols (
linux/include/errno.h
) -
errno.errorcode:
errno.errorcode[errno.EPERM]
>> 'EPERM'
What is sterror
?
-
os.strerror(errno.ENOSPC)
- Return the error message corresponding to the error code in code.
- On platforms where
strerror()
returnsNULL
when given an unknown error number,ValueError
is raised.
What is encapsulation?
-
class:
- variables
- methods
- Information hiding:
\_\_private, _protected, public
- GET / SET methods
Useful classes - methods of shelve
module:
What are the OAuth 2.0 roles?
- Resource owner: End user ⇒ Credentials ⇒ Limited scope
- Client: App.
- API’s Resource Server: Hosts user’s information.
- API’s Auth Server: Access tokens.
Explain the OAuth2.0 endpoints:
-
Authorization Endpoint:
- Used by Auth code (returns code) and Implicit (returns token) grants.
-
Token Endpoint:
- Client presents Auth code or Refresh Token, Auth server grants access.
- Used by Auth code, resource owner, client credentials.
-
Redirection Endpoint:
- OAuth redirects to a URI.
Describe the Auth Code grant:
-
Auth request:
- Client sends:
- Client ID.
- Scope.
- State.
- Redirection URI.
- Client sends:
-
Auth grant:
- Auth code is sent to Auth server. An access/refresh token will be issued.
-
Access Token:
- The client sends the access token to the Resource server to have access to resources.

Explain the basic process to configure OAuth2.0 with a Google Cloud API:
- Create an OAuth2.0 client:
- Client ID & secret.
- Configure consent screen:
- App name.
- Developer email.
- Scopes.
-
App type:
- Local web server.
-
Add redirect URI.
- http://localhost.8080/ (same port as in run local server).
-
Get client ID & secrets
- JSON.
How do you use a Google API using OAuth2.0?
-
Install:
pip install google-auth-oauthlib
pip install google-api-python-client.
-
Import:
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
-
Instance the Auth Flow:
self.flow = InstalledAppFlow.from_client_secrets_file( "creds_00.json", scopes=[] )
-
OAuth2.0:
- Ask user auth.
self.flow.run_local_server( port=8080, prompt="consent", authorization_prompt_message="" )
- Get credentials , access-refresh token:
self.flow.credentials
- Ask user auth.
- Service:
self.service = build("classroom", "v1", credentials=creds)
request = self.service.courses().list(courseStates="ACTIVE", teacherId="me")
response = request.execute()