2014-01-19 81 views
0

我不知道爲什麼它不讓我在Box中創建文件。我試圖改變周圍的設置,但我仍然找不到解決方案。這裏是我的Django的視圖文件中的代碼:框API訪問被拒絕,嘗試創建文件夾時的權限問題

#from django.shortcuts import render 
from django.http import HttpResponse 
from rauth import OAuth2Service 
import json 

# Create your views here. 
def access_box(request): 
    CLIENT_ID = 'xxx' 
    CLIENT_SECRET = 'xxx' 
    box_storage = OAuth2Service(
          name='Box', 
          client_id=CLIENT_ID, 
          client_secret=CLIENT_SECRET, 
          authorize_url='https://www.box.com/api/oauth2/authorize', 
          access_token_url='https://www.box.com/api/oauth2/token', 
          base_url='https://www.box.com/' 
          ) 
    redirect_uri = 'http://127.0.0.1:8000/access-box/' 

    params = {   
      'redirect_uri': redirect_uri, 
      'response_type': 'code',   
      } 
    url = box_storage.get_authorize_url(**params) 

    if request.GET:   
     if request.GET.get('code'): 
      code = request.GET.get('code') 
      data = {'code': code, 
        'grant_type': 'authorization_code', 
        'redirect_uri': redirect_uri, 
        }  

      payload = { 
         'name': 'testfolder', 
         'id': '0', 
         } 
      session = box_storage.get_auth_session(data=data, decoder=json.loads) 
      r = session.post('https://api.box.com/2.0/folders', params=payload) 
      print(r.url) 
      print(r.json()) 
      #r = r.json() 
      #html = "<html><body>request available! authentication code: {0}<p>{1}</p></body></html>".format(code, r) 
      html = "<html><body>request available! authentication code: {0}</body></html>".format(code)  
      return HttpResponse(html) 
     else: 
      return HttpResponse("zilch!") 
    else: 
     html = "<html><body></h1>Allow rushdGYM access to Box.com</h1><p><a href='{0}'>Allow now</a></body></html>".format(url)  
     return HttpResponse(html) 

這是響應我在試圖創建一個文件夾@盒。

{u'status': 400, u'code': u'bad_request', u'request_id': u'2143252gdf3', u'context_info': {u'errors': [{u'reason': u'missing_parameter', u'message': u"'parent' is required", u'name': u'parent'}, {u'reason': u'missing_parameter', u'message': u"'name' is required", u'name': u'name'}]}, u'help_url': u'http://developers.box.com/docs/#errors', u'message': u'Bad Request', u'type': u'error'} 

任何指導方向,以正確的方向引導我?

回答

3

首先,看看你發佈的錯誤信息;它明確規定哪些錯誤是:

[ 
    {u'reason': u'missing_parameter', u'message': u"'parent' is required", u'name': u'parent'}, 
    {u'reason': u'missing_parameter', u'message': u"'name' is required", u'name': u'name'} 
] 

所以,你必須在你的要求提供parentname


其次,請注意Box API預計負載是JSON編碼並存在於主體中。

截至目前,您使用參數params作爲請求(GET)參數發送它爲session.post,您應該使用data參數。

可能還想將您的Content-Type標題設置爲application/json

0

感謝托馬斯O.我用數據如你所說,然後我的編碼有效載荷JSON,而工作!

我只有改變這種:

r = session.post('https://api.box.com/2.0/folders', data=json.dumps(payload)) 
+2

您應該將基本URL可能更改爲https://api.box.com。 auth網址是www.box.com,但所有API調用都轉到api.box.com – Peter

相關問題