2014-02-25 2 views
2

나는 파이썬 도구를 사용하여 힙합 방에 업데이트를 보내고 싶습니다. 쉘 스크립트를 사용하여이 작업을 수행하므로 환경에서는 작동하지만 토큰을 힙합 API에 푸시 할 수는 없습니다. 뭔가 간단한 것이되어야합니다.python에서 hipchat에 게시하는 방법

먼저이 제대로 인증하고 메시지 전달 :

curl -d "room_id=xxx&from=DummyFrom&message=ThisIsATest&color=green" https://api.hipchat.com/v1/rooms/message?auth_token=yyy 

을하지만 파이썬 "요청"모듈을 사용하려고 할 때, 나는 갇히지하고있다.

False 401 {"error":{"code":401,"type":"Unauthorized","message":"Auth token not found. Please see: https:\/\/www.hipchat.com\/docs\/api\/auth"}} 

기본적으로 내가 제대로 인증 토큰을 전달하는 것 같지 않습니다

import requests 
room_id_real="xxx" 
auth_token_real="yyy" 
payload={"room_id":room_id_real,"from":"DummyFrom","message":"ThisIsATest","color":"green"} 
headerdata={"auth_token":auth_token_real,"format":"json"} 
r=requests.post("https://api.hipchat.com/v1/rooms/message", params=payload, headers=headerdata) 
print r.ok, r.status_code, r.text 

여기 내 오류 정보입니다. 이 기능을 어떻게 작동시킬 수 있습니까?

+1

를 사용 libs와의 공식 목록입니다 토큰을 쿼리 문자열 매개 변수에 넣고, 파이썬 예제에서는 헤더 값으로 전달합니다. 귀하의'curl' 제출물이 작동하기 때문에 여러분은 URL 쿼리 문자열에 토큰을 포함시켜 파이썬에서 같은 방식으로 시도해 보셨습니까? – lanzz

답변

1

Ianzz의 말처럼 URL 검색어 문자열에 URL을 포함 시키십시오. clunky (당신은 아마 그것을 해시하고 싶다!), 확실히 작동합니다.

다른 이상한 특질은 당신이 힙합을 통해 얻는 토큰입니다. 나는 오늘 저녁에 내 자신의 개인 토큰을 사용하여 문제가 끝나지 않았다. API의 v2 베타 버전에 해당하는 것으로 보입니다. 그룹 관리자를 통해 토큰을 받으려면 도움이 될 수 있습니다.

이전 질문은 오래된 것입니다.

+0

더 나은 답변이 있다고 생각하기 때문에이 대답을 수락하지 않습니다. 그러나 이것이 내가 지금하고있는 일입니다. –

4

도움이 될만한 V2 API 예제가 있습니다. V2 API가 요청 양식을 정확하게 얻는 것에 대해 좀 더 민감한 것으로 나타났습니다. 그러나 V2 API를 준수하는 것이 더 진보적 일 수 있습니다 (원래 질문은 V1과 관련이있는 것으로 보였지만).

#!/usr/bin/env python 
import json 
from urllib2 import Request, urlopen 

V2TOKEN = '--V2 API token goes here--' 
ROOMID = --room-id-nr-goes-here-- 

# API V2, send message to room: 
url = 'https://api.hipchat.com/v2/room/%d/notification' % ROOMID 
message = "It's a<br><em>trap!</em>" 
headers = { 
    "content-type": "application/json", 
    "authorization": "Bearer %s" % V2TOKEN} 
datastr = json.dumps({ 
    'message': message, 
    'color': 'yellow', 
    'message_format': 'html', 
    'notify': False}) 
request = Request(url, headers=headers, data=datastr) 
uo = urlopen(request) 
rawresponse = ''.join(uo) 
uo.close() 
assert uo.code == 204 
2

또 다른 기본 예제 사용 요청 :

import requests, json 

amessage = 'Hello World!' 
room = 'https://api.hipchat.com/v2/room/18REPLACE35/notification' 
headers = {'Authorization':'Bearer UGetYourOwnAuthKey', 'Content-type':'application/json'} 
requests.post(url = room, data = json.dumps({'message':amessage}), headers = headers) 
관련 문제