使用python请求访问ASANA数据

使用python请求访问ASANA数据,python,oauth-2.0,python-requests,asana,asana-api,Python,Oauth 2.0,Python Requests,Asana,Asana Api,首先,我不是一个巨蟒大师,你可能知道。。。我们开始吧 我正在尝试使用Asana的API通过Python请求(项目、任务等)提取数据,并使用Oauth 2.0进行身份验证。。。我一直在试图找到一个简单的python脚本来开始,但我没有任何运气,我找不到一个像样和简单的例子 我已经创建了应用程序,并获得了我的客户端密码和客户端密码。但我真的不知道从哪里开始,怎么开始。。。有人能帮我吗 import sys, os, requests sys.path.append(os.path.dirname(

首先,我不是一个巨蟒大师,你可能知道。。。我们开始吧

我正在尝试使用Asana的API通过Python请求(项目、任务等)提取数据,并使用Oauth 2.0进行身份验证。。。我一直在试图找到一个简单的python脚本来开始,但我没有任何运气,我找不到一个像样和简单的例子

我已经创建了应用程序,并获得了我的客户端密码和客户端密码。但我真的不知道从哪里开始,怎么开始。。。有人能帮我吗

import sys, os, requests

sys.path.append(os.path.dirname(os.path.dirname(__file__)))

import asana
import json
from six import print_
import requests_oauthlib
from requests_oauthlib import OAuth2Session

client_id=os.environ['ASANA_CLIENT_ID'],
client_secret=os.environ['ASANA_CLIENT_SECRET'],
        # this special redirect URI will prompt the user to copy/paste the code.
        # useful for command line scripts and other non-web apps
redirect_uri='urn:ietf:wg:oauth:2.0:oob'

if 'ASANA_CLIENT_ID' in os.environ:

    #Creates a client with previously obtained Oauth credentials#
    client = asana.Client.oauth(

        #Asana Client ID and Secret, set as a Windows environments to avoid hardcoding variables into the script#
        client_id=os.environ['ASANA_CLIENT_ID'],
        client_secret=os.environ['ASANA_CLIENT_SECRET'],
        # this special redirect URI will prompt the user to copy/paste the code.
        # useful for command line scripts and other non-web apps
        redirect_uri='urn:ietf:wg:oauth:2.0:oob'
        )
    print ("authorized=", client.session.authorized)

    # get an authorization URL:

    (url, state) = client.session.authorization_url()


    try:
        # in a web app you'd redirect the user to this URL when they take action to
        # login with Asana or connect their account to Asana
        import webbrowser
        webbrowser.open(url)
    except Exception as e:
        print_("Open the following URL in a browser to authorize:")
        print_(url)

    print_("Copy and paste the returned code from the browser and press enter:")

    code = sys.stdin.readline().strip()
    # exchange the code for a bearer token
    token = client.session.fetch_token(code=code)

    #print_("token=", json.dumps(token))
    print_("authorized=", client.session.authorized)

me = client.users.me()


print "Hello " + me['name'] + "\n"

params = {'client_id' : client_id, 'redirect_uri' : redirect_uri, 'response_type' : token,}

print_("*************** Request begings *******************"+"\n")
print_("r = requests.get('https://app.asana.com/api/1.0/users/me)" + "\n")
r = requests.get('https://app.asana.com/api/1.0/users/me', params)

print_(r)
print_(r.json)
print_(r.encoding)

workspace_id = me['workspaces'][0]['id']
print_("My workspace ID is" + "\n")
print_(workspace_id)

print_(client.options)
我不知道如何使用Asana的请求库。他们的python文档没有帮助我。我正在尝试提取可用的项目及其代码颜色,以便稍后将它们打印到web浏览器中(用于不同项目及其各自颜色的高级视图-绿色、黄色或红色)

当我将url()引入浏览器时,它会返回一个包含数据的json响应,但当我尝试对脚本执行相同操作时,它会返回一个401(未授权)响应

有人知道我错过了什么/做错了什么吗


谢谢你

我认为问题在于请求库是一个较低级别的库。您需要将所有参数传递给您的请求


您是否有理由不专门使用Asana Python客户端库来发出请求?您希望从Asana获取的所有数据(项目、任务等)都可以使用Asana Python库访问。您需要在库中查找所需的方法。例如,
任务
资源的方法。我认为这种方法比在Asana库和Requests库之间切换更容易(也不容易出错)。Asana库实际上构建在请求()之上

我看到你在使用asana oauth库。但不是来自oauthlib库的OAuth2Session请求。我认为你应该遵循这里给出的例子-感谢提供的链接。他们确实帮了很多忙!干杯