烧瓶上作业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 swing,将数组列表添加到组件   gwt开发模式运行时的java服务器端测试用例   网格窗格中的java居中按钮和文本(JavaFX)   java heroku Getting at=error code=H13 desc=“连接关闭而无响应”method=GET path=“/api/test”service=28795ms status=503   java在批处理中使用JDBC preparedStatement   按钮文本的java Selenium css选择器   Spring boot未在maven项目中从soap wsdl生成java类。这是我的pom。xml   java如何向POST restful服务发送json数据   servlet线程的java数据库连接?   java ViewPager事件在从用户注销时给我错误   在Java8中检查列表是否同时为空和非空   java相对路径:无法为访问配置文件选择正确的相对路径   用playframework存储二进制密码哈希的java   java第三方JAR创建日志文件   安卓在java中使用常量1的按位移位的优势   Java使用for循环平均从键盘读取的分数集   java我想在同一活动中停止后重新启动相机源   java为什么if-else语句不能按预期工作?输入问题