1

私はBasecamp APIで動作するクロム拡張機能を開発中です。HTTP拡張機能を使用したChrome拡張機能のXMLHttpRequestは、引き続き正規のページに承認ヘッダを送信します。

私はすべてのXMLHttpRequestsをAPIに対して行っているバックグラウンドページを持っています。私はOAuthを使用しているのではなく、基本的なHTTP認証とAPIトークンを使用しています。私の背景ページで

、私はこのような要求を行います:すべてが正常に動作しますが、問題は、私は要求をするために拡張機能を使用した後、HTTPリクエストヘッダの許可が送信されていることを

var xmlReq = new XMLHttpRequest(); 
xmlReq.onreadystatechange = function(){ doSomething(xmlReq.responseXML); }; 

xmlReq.open(
    'GET', 
    'https://mycompany.basecamphq.com/projects.xml', 
    true, 
    access_token, 
    'x' 
); 

xmlReq.send(null); 

を私がhttps://mycompany.basecamphq.comにアクセスするたびに、BasecampのWebインターフェイスでは動作しないものがあります。拡張機能で、基本的なHTTP認証でリクエストを行うことはできますが、通常のブラウザリクエストではヘッダーを使用できません。

紛らわしい質問です。質問がある場合は、それを明確にしようとします。ありがとう

答えて

4

私は解決策を考え出したと思います。

xmlhttpresponse.setRequestHeader()関数を使用すると、認証ヘッダーを手動で設定しても永続性が失われます。

xmlReq.open(
    'GET', 
    'https://mycompany.basecamphq.com/projects.xml', 
    true); 

xmlReq.setRequestHeader("Authorization", "Basic "+base64_encode(access_token+":x")); 

xmlReq.send(null); 

私はphpjs.orgライブラリで見つかったBASE64_ENCODE機能を使用:

は、したがって、上記のコードのこの修正バージョンを使用して。

0

Google Apps Scriptを使用しているユーザーにこれを追加しています。

 


    function myFunc(){ 
     var parameters = { 
     method: "GET", 
     accept: "application/xml", 
     contentType: "application/xml", 
     headers: {"Authorization": "Basic " +Utilities.base64Encode("YOUR_BASECAMP_ACCESS_TOKEN:GARBAGE_PASSWORD")} 
     }; 
     var baseURL = "https://YOUR_COMPANY_NAME.basecamphq.com/projects.xml"; 
     var text = UrlFetchApp.fetch(baseURL, parameters); 
     Logger.log(text.getContentText()); 
    } 

 

これを実行して、[表示]> [ログ]を押して結果を確認することができます。 詳細情報はですが、あなたの要求を知ることを前提に書かれています。

関連する問題