2014/12/13

ナニをヤってるんだろうね・・・

・・・最近のググるさんはナンかヒドいね。


GoogleAppsScriptから Twitterへの投稿処理、認証が通らなくなってた。
で、改めて 手動で接続を承認してみたのだが、それでも動作しない・・・

一旦 スクリプト中のTwitter投稿行をRemしたのだが、それでは もしサービスが復旧しても
Tweet出来ない事になるから、対象処理行を ブログ投稿処理より後にレイアウトして対応。

もし https://twitter.com/OkitsunePSO2へのTweetが再開したら、サーヒスが回復したと考えていいだろう。


・・・一応添えておくと、TwitterのOAuth の Ver.は 1.xで、Googleは11月末には 2.xへ完全移行している。

Googleからは Ver.2.0への移行をアナウンスされて結構経つから それ自体は問題無いとは思うのだが、
Ver.切り替え自体がアナウンスなく唐突に実施されていると云うのは、サスガに絶句せざるを得ない・・・


・・・本文の文字でエラーが発生する可能性については薄々気づいていたが、
よもや認証エラーが出る原因となるとは思いもしなかった(´ヘ`;)


具体的には 今回のトラブルの場合、全角文字を含む本文に 半角で "X'mas"とあり、その内の、
半角のシングルクォーテーションが 文字エンコードでツマづくか、別の処理のコードに挿し代わってしまったか、
いずれにしても正しくない状態でTweetしようとして、再認証要求が発行されていた模様・・・

ツマり今回は、Twitter側での 文字の受け取り方に沿っていない文字列で投稿しようとしたのが原因だったコトに。
因って、エンコード処理直前に、半角のシングルクォーテーションを 全角のモノに置換するよう追記して対応し コト無きを得た。


最近 Googleは、APIの差し替えで 認証処理など様々なトコロで問題発生の要因となっていたコトで、
また 御他聞に洩れないのかと半ば諦めた感はあったが、今回の件は 真に 普段の行いが
在らぬ容疑を掛けられる要因にもなる と云う そうした典型例であるのは間違いがナイだろう・・・


・・・ナニをヤってるんだろうね(;-_-)


結局 今回のエラーの原因は 半角のシングルクォーテーションだったワケで、
エンコード前の文字列に対して 対象を置換する行をレイアウトして対策しようとしたのだが・・・


なまじ ルーチンのテスト実行で
text = text.replace("X'mas","X’mas");
こんな記述が あっさり通ったモノだから、 更に手を抜こうとして こうしたら
text = text.replace("'","’");
また盛大にコケた・・・(爆 このヘンの勝手は VBScriptとは随分異なってるみたいだな・・・ まぁ 最初からRegExpなどで正規表現使えってハナシだったね(;´∀`)
text = text.replace(new RegExp("'","g"),"’");
var encodedTweet = encodeURIComponent(text).replace(/[!'()*]/g, function(c) {
  return "%" + c.charCodeAt(0).toString(16);
});
・・・また、コレは敢えて添える必要性自体も疑問だが、当然ながら 事前置換の条件記述は イチイチ new RegExp(~ などとしなくても、
text = text.replace(/[']/g,"’");
コレでも 同じだから・・・

・・・コトを 完全に失念してた orz


同一内容のTweetは投稿数制限あるんだったね・・・ タイムスタンプくらいつけるべきだったか(´ヘ`;)

0 件のコメント:

コメントを投稿