2012-02-29 16 views
1

私はつぶやくChrome拡張機能を開発しています。私はこのためにGoogle oAuth tutorialを使用しています。Google Chrome拡張機能でヌルの 'chromeExOAuthConfig'プロパティを読み取れません

Twitterから認証ユーザーを取得するには、助けが必要です。私のアプリからtweetingのためにそれらを使用できるようにどこかに資格情報を保存する。私はこれに新しいです、そして、私は指示が必要です。私は以下の方法を作った。承認プロセスを開始する。

しかし、Twitterの認証に私を送信しません。私がこのauthorizeメソッドを呼び出すとき。私はそれを正しくしていますか?

ここにポインタが必要です。 chrome_ex_oauth.htmlもダウンロードしました。これはコールバックと呼ばれます。右?

私はこれらのアクセストークンと秘密をすべての正当なユーザーに対して保存し、tweetingに使用することを知っていません。

<script type="text/javascript" src="chrome_ex_oauthsimple.js"></script> 
    <script type="text/javascript" src="chrome_ex_oauth.js"></script> 

jQuery(function() { 

      var oauth = ChromeExOAuth.initBackgroundPage({ 
        'request_url': 'https://api.twitter.com/oauth/request_token', 
        'authorize_url': 'https://api.twitter.com/oauth/authorize', 
        'access_url': 'https://api.twitter.com/oauth/access_token', 
        'consumer_key': '---', 
        'consumer_secret': '---', 
        'scope': '', 
        'app_name': 'Tweet' 
       }); 
      jQuery('#connect').click(function(){ 

       oauth.authorize(install);  
      }); 
     }); 

     function install() { 
      alert('success') 
     } 

     function callback(resp, xhr) { 
      // ... Process text response ... 
     }; 

編集:私のoauth.authorize

呼び出されます。リダイレクトページが表示されます。しかし、それは "リダイレクト..."に固執しました。エラーコンソールに次のエラーが表示されます。

はヌル enter image description here

答えて

1

のプロパティ「chromeExOAuthConfig」を読み取ることができません私はクロームのOAuthチュートリアルでは、実際に肥大化と間接ました。私は、OAuth2を使ってプライベートGitHubデータを取得する拡張機能を追加しました。

Here is the source(もちろん、inject.jsとadapter.htmlも参照してください - どちらもjQueryとは独立しており、必須です)。

私は本質的にちょうど私の必要性に合わせてこのsolutionを改造しました。何が起こっている

は次のとおりです。

  1. あなたのアプリケーションIDと承認を要求します。
  2. Twitterはユーザーにログインし、アプリケーションを認証します。
  3. 指定されたリダイレクトパラメータにリダイレクトされます(Webページやサーバーによっては内線番号を心配したくない場合は、https://twitter.com/robots.txtにリダイレクトするよう指定します。これは問題ではありません。このrobots.txtページはどこにもありません)
  4. リダイレクトURLに挿入するコンテンツスクリプトを追加します。スクリプトにクエリ文字列をプルし、アダプタページのURLに追加してリダイレクトさせます。
  5. アダプタページで、クエリ文字列からアクセスコードを読み込み、アクセスコードとアプリケーションの秘密をTwitterに要求します。すべてが正しく行われた場合、ユーザーのアクセストークンを提供するコールバックをTwitterから受信します。
  6. 保存拡張ローカルストレージへのトークン、アダプタページを閉じて、あなたは、ポップアップが開いたときに今、あなたはTwitterのAPIを使用するために、ローカルストレージからのOAuth2トークンを取得することができます

良いです。背景ページが見つからなかったかのように私はあなたのコンソールで見ることができるものからあなたUPDATE

TO

Here is more detail about the OAuth2 flow.

答えはそれが見えます。拡張機能で背景ページが実行されていますか?その場合は、これを新しく追加して、chrome:// extensionsの拡張子の横にあるリロードボタンを使用して拡張機能をリロードする必要があります。 Chromeはマニフェストで宣言されたものを変更したり、通常はリロードする必要があるときには非常に厄介です。しかし、chrome.extensions.getBackgroundPage()は標準のAPI呼び出しなので、nullを返すことは問題です。

私のソリューションを調べましたか?これは非常にうまく動作し、アダプター・ページをカスタマイズして低速接続(フィードバックなどのユーザー)の進行状況を表示することができます。また、jQueryに依存しません。違いは気付かないかもしれませんが、リダイレクトページにjQueryライブラリをロードすると、スクリプトを引き込まなければならないので、トランザクションが長くかかることになります。

+0

@ jjNford私は自分のものを稼働させるかどうかを迷惑していました。 Chromeの設定で拡張機能を何度も再読み込みしました。しかし、それは私に同じエラーを与える。解決できない場合は、コードを再起動します。 –

+0

@TahirAkram私に見せるためにマニフェストファイルを投稿できますか? '{ "名前":jjNford @ – jjNford

+0

は、ここに私のマニフェストファイルである "Chromeからさえずる"、 "バージョン": "1.0"、 "説明": "Chromeからさえずる。"、 "browser_action":{ "default_icon": "icon.pngの"、 \t "ポップアップ": "popup.html" }、 "アクセス許可":[ "タブ"、 \t "http://ajax.googleapis.com"、 \t "http://*.twitter.com/*"、 \t "clipboardWrite" ] } '私はTwitterのアカウントを追加する別の背景ページ(設定と呼んでいます)にいます。私の主要な背景ページではありません。 –

関連する問題