2010-01-02 29 views
11

Tôi đang tạo một ứng dụng nhỏ trong Adobe Air mà tôi cần tương tác với API Github Gist. Tuy nhiên tôi bị mắc kẹt.Thêm Gist mới bằng Github API

Nếu bạn chưa quen với Adobe Air, bạn vẫn có thể trợ giúp, đối tượng JavaScript XMLHttpRequest có thể thực hiện các yêu cầu miền chéo, vì không có miền nào như vậy. Vì vậy, không có gì Adobe Air cụ thể ở đây.

Nơi tôi bị kẹt là tôi nghĩ rằng tôi cần phải xác thực bản thân mình sau đó thực hiện POST. Tôi chỉ không hiểu nó

Trả lời

4

Vấn đề với kịch bản của bạn là mặc dù bạn đang gửi một phương thức POST, bạn đang thêm các dữ liệu trong URL như thể đó là một GET. Bạn chỉ cần thay đổi xmlhttp.send(NULL) thành xmlhttp.send(data), trong đó data là dữ liệu truy vấn bạn đã thêm vào URL gists trước (bao gồm thông tin tệp và xác thực).

Là một ví dụ đơn giản, đây là một đoạn trích từ a bash script tạo ra một ý chính mới:

#!/usr/bin/env bash 
if [ -z "$(git config github.token)" ] 
then echo "warning: no api key found, to add follow instructions on github account page." 
else echo "attempting to create a new gist using your github authentication..."; fi 

SHA=$((curl https://gist.github.com/gists --include \ 
     --data login=$(git config github.user) \ 
     --data token=$(git config github.token) \ 
     --data action_button=private \ 
     --data 'file_ext[gistfile1]=txt' \ 
     --data 'file_contents[gistfile1]=Hello World, this is an example gist!' \ 
| perl -e 'for(<>){if(/^Location: https?:\/\/gist.github.com\/([0-9a-f]+)/){print $1}}')2>/dev/null) 

echo "New example gist created at https://gist.github.com/$SHA" 
+0

Tôi không hiểu định dạng dữ liệu POST để được in Bạn có thể giải thích thêm một chút xin vui lòng. –

+0

Trong tập lệnh gốc của bạn, bạn có dòng: "var url = gists + '? ...'". Dữ liệu bài đăng của bạn sẽ là mọi thứ tôi đã thay thế bằng "...". –

1

Bạn không cần phải xác thực người dùng.

XMLHttpRequest sẽ chỉ phải có tên người dùng và mã thông báo API người dùng được bao gồm trong yêu cầu.

Nhìn vào đoạn mã ví dụ ruby ​​được cung cấp bởi github here, bạn chỉ cần cung cấp các thuộc tính sau:

  • file extenstion
  • tên file
  • nội dung
  • Nếu ý chính là tin hay không
  • Đăng nhập người dùng
  • Mã thông báo API người dùng

pythonperl phiên bản của kịch bản

+0

tôi không thể có được bất cứ điều gì để làm việc. Đây là những gì tôi đã thử http://pastebin.com/fa70880b –

+0

Tôi nghĩ rằng loại tệp/tên và nội dung của bạn phải có tiền tố giống như ví dụ. 'file_ext [gistfile1]' 'file_name [gistfile1]' 'file_contents [gistfile1]' –

+0

Tôi đã thay đổi nó nhưng nó vẫn không hoạt động http://pastebin.com/f977d433 –

Các vấn đề liên quan