Basecamp API ドキュメントで説明されている curl メソッドを使用して、bash シェルからメッセージを簡単に作成できます。ただし、私のアプリは php で書かれていないため、基本的な ajax 投稿を介して basecamp サーバーにアクセスできるようにしたいと考えています。残念ながら、curl ステートメントを ajax の投稿に翻訳することはできないようです。私はこれで十分だと思います:
function callBasecamp() {
var parameters = {
user:"[my_basecamp_username]",
pass:"[my_basecamp_password]",
userAgent: '[my_app] (my_email)',
contentType: 'application/json; charset=utf-8',
data: ({ "subject": "This is a Test Message", "content": "This is test content. Please disregard if notified." }),
};
var data = JSON.stringify(parameters);
$.ajax({
type: "POST",
data: data,
dataType: 'json',
url: "../../../../site_media/proxy.php?url=https://basecamp.com/[account_id#]/api/v1/projects/[project#]/messages.json?" + data,
traditional: true,
success: function(data){
console.log(data);
}
});
}
しかし、私の開発サーバーは HTTP 200 216 応答を返しますが、basecamp はメッセージを作成せず、返されたデータは表示されません。django csrfの問題を回避するためにphpプロキシを使用しています:
proxy.php
<?php
// File Name: proxy.php
if (!isset($_POST['url'])) die();
$url = urldecode($_POST['url']);
$url = 'https://' . str_replace('https://', '', $url); // Avoid accessing the file system
echo file_get_contents($url);
私の困難がどこにあるのかについてのアイデアはありますか?