Airで というよりも jqueryで というほうが正しいきもしますが、
seo-webmasterではRESTでGoogleにログインするわけですが、
実装はこんなかんじの雑なソースになっております。
var auth_url = "https://www.google.com/accounts/ClientLogin"; var auth_id = $("#auth_id").val(); //フォームのIDを取得 var auth_pass = $("#auth_pass").val(); //フォームのパスワードを取得 $.ajax({ url : auth_url, type : "POST", data : {"accountType":"GOOGLE","Email":auth_id,"Passwd":auth_pass,"service":"サービス名","source":"ソース名"}, error : function(XMLHttpRequest, textStatus, errorThrown){ //エラー処理 }, success: function(rs) { var token = rs.match(/Auth=([a-zA-Z0-9_\-]+)/); //ここでトークンを切り出して保存する $('#SITE-TOKEN').val(token[1]); } });
これはPOSTなので、いいのですが、次はサイトの認証。
こっちはPUTを使います。
var webmaster_url = "https://www.google.com/webmasters/tools/feeds/sites/" + encodeURIComponent(サイトID).replace(/\./g,"%2E"); var token = $('#SITE-TOKEN').val()//認証トークン; //送信するXMLを生成する var xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:wt='http://schemas.google.com/webmasters/tools/2007'><atom:id>" + site_id + "</atom:id><atom:category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/webmasters/tools/2007#site-info'/><wt:verification-method type='htmlpage' in-use='true'/></atom:entry>"; $.ajax({ url : webmaster_url, type : "PUT", processData : false, //デフォルトがtrueなので必ずきってく dataType:"xml", //なくても動いたけど一応 受信コンテンツタイプの指定 contentType : "application/atom+xml; charset=UTF-8", //コンテンツタイプXMLにしないとデフォルトが urlencodedなのでエラーになる data: xml, //送信xml beforeSend : function(req) { //ログイン時の認証トークンを送る req.setRequestHeader('Authorization', 'GoogleLogin auth=' + token); }, error : function(XMLHttpRequest, textStatus, errorThrown){ //エラー処理 }, success: function(rs) { //成功時の処理 } });
ポイントとしては processData をきることと、
contentType をちゃんとatom+xmlにすること、
それからbeforeSendでsetRequestHeaderにトークンを埋め込むことかなー
ここらへんのリファレンスみたいなのがあんまなくて(読みかたがわからないだけかも)
適当に大文字にしたり小文字にしたり半角スペース入れたり
してたら通った感じなので、もしかしたら間違ってるかも。
AirでGoogle認証を使うならこんなかんじで試してみてください。