烧瓶上作业API支架

Flask-Upwork的Python项目详细描述


要求

  • flask
  • python-upwork
  • python-oauth2

授权

快速启动

在使用upwork api之前,您需要获取一对api密钥。 访问Upwork API Center documentation 详细情况。请注意,flask upwork通过oauth使用授权,它需要auth类型为“oauth”的密钥。

请确保会话所需的基于安全cookies的密钥已在设置中指明。py

SECRET_KEY = '(your random secret key)'

您需要将一对upwork api密钥存储在settings.py中:

ODESK_KEY = '(your Upwork public key)'
ODESK_SECRET = '(your Upwork secret key)'

您还可以在settings.py中设置团队列表,该列表将能够授权。 如果不指定此选项或将列表保留为空,则所有upwork用户都可以授权:

ODESK_AUTH_TEAMS = ('teamname',)

请确保您已在app.py中正确注册了upwork模块。 请记住,url前缀可以是您喜欢的任何内容:

from flask import Flask
from flaskext.odesk import odesk

app = Flask(__name__)
app.config.from_pyfile('settings.py')
app.register_module(odesk, url_prefix='/odesk')

使用授权

请使用decorator所需的登录名关闭匿名用户对网站某些部分的访问:

@app.route('/only/for/odesk/users')
@odesk.login_required
def admin():
    return "Welcome, Upwork user!"

如果您想在模板中指明登录或注销链接,则可以使用url\u来执行功能,并且odesk\u已授权变量:

{% if odesk_is_authorized %}
  <a href="{{ url_for('odesk.logout') }}">Log out</a>
{% else %}
  <a href="{{ url_for('odesk.login') }}">Upwork log in</a>
{% endif %}

要检查当前用户的授权,您可以使用已授权的方法:

@app.route('/test')
def test():
    if odesk.is_authorized():
        return "You are authorized."
    else:
        return "You are not authorized yet."

如果需要,可以从代码中手动启动授权过程:

if not odesk.is_authorized():
    return odesk.login()

您还可以使用next参数来指示url,在授权过程结束后将重定向到哪里:

if not odesk.is_authorized():
    return odesk.login(next='/blah/blah')

您可以使用注销方法来注销用户。 请注意,与登录不同,此方法不会返回大量重定向。 它只是删除oauth会话。您应该手动返回响应:

if odesk.is_authorized():
    odesk.logout()
    return redirect('/')

如果要展开自动调整过程,可以在登录后使用decorator, 表示您的函数,在成功授权后将调用该函数:

@odesk.after_login
def save_session():
    # Getting current user's data. Please, see below how to use the Client.
    session['user'] = odesk.get_client().hr.get_user('me')

如果您在登录后使用了并将某些内容保存到会话中,请, 注销后不要忘记删除此会话,请在注销后使用decorator

@odesk.after_logout
def delete_session():
    if 'user' in session:
        del session['user']

使用客户端

您可以使用获取访问令牌方法获取当前访问令牌和访问令牌机密, 可存储在数据库中,用于以后访问客户端(如果需要):

if odesk.is_authorized():
    access_token, access_token_secret = odesk.get_access_token()

您可以使用get client方法获取客户端:

if odesk.is_authorized():
    c = odesk.get_client()
    c.team.get_teamrooms()

或者,即使当前用户未经授权,也可以使用客户端, 但是您有访问令牌和访问令牌密钥:

if not odesk.is_authorized():
    c = odesk.get_client(access_token, access_token_secret)
    c.team.get_teamrooms()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我如何在我的安卓应用程序中集成一个当我点击注销按钮时应该打开的反馈表单?   java在循环遍历SQL表时退出   java hibernate with jpa不会停止   java在从方法返回值时,是否有一种很好的方法“null”成员变量?   java这段代码的运行时复杂性是多少?说明中给出了代码   java如何访问struts if标记的test属性中的属性   TomTom Android SDK中的java返回位置为null   Java equals方法的良好设计   java在拖动ListView边缘时如何检测?   java如何从游标中检索字符串数组   SQLiteJava和sqlite4java   音频连接来自Java的两个WAV文件?   使用java的用户的ip地址   java@XmlRegistry它是如何工作的?   java如何防止每个url访问wicket页面   java getBytes()在Windows(Java9)下正常工作,在Linux下也不工作   intellij idea Java不能将lambda用于自制接口lambda转换的目标类型必须是接口