2012-02-29 64 views
1

我正在開發一個Chrome擴展程序,它將發送推文。我正在使用Google oAuth tutorial無法讀取Chrome瀏覽器擴展程序中null屬性的'chromeExOAuthConfig'

我需要幫助才能從Twitter獲得授權用戶。並在某處保存憑據,以便我可以使用它們從我的應用程序發送推文。我對此很陌生,我需要方向。我撰寫了以下方法。開始授權過程。

但它不會將我發送到Twitter身份驗證。當我稱這種授權方法。我做對了嗎?

我需要一些指針。我也下載了chrome_ex_oauth.html。這將被稱爲回調。對?

我不知道...當我將獲得這些訪問令牌和祕密,以保存它們對每個授權用戶,並使用它們進行推文。

<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」我發現了Chrome的OAuth的教程實在臃腫和間接的。我剛剛推出了一個擴展,它使用OAuth2提取私人GitHub數據。

Here is the source(請務必查看inject.js和adapter.html - 兩者都獨立於jQuery並且是必需的)。

我基本上只是扭轉了這個solution以適應我的需要。

發生了什麼事是:

  1. 您請求授權使用你的應用程序ID。
  2. Twitter將使用戶登錄並授權應用程序。
  3. Twitter會將您重定向到指定的重定向參數(如果您不想擔心取決於網頁或服務器的擴展名,我將指定重定向點擊https://twitter.com/robots.txt,因爲您的擴展名依賴於Twitter,如果Twitter是關閉它無所謂無論如何,這robots.txt頁面不會去任何地方)
  4. 添加一個內容腳本注入重定向url。讓腳本提取查詢字符串並將其附加到適配器頁面url並重定向到它。
  5. 在適配器頁面加載中,從查詢字符串中獲取訪問代碼,並使用訪問代碼和應用程​​序密鑰向Twitter發送請求。如果一切正常完成,您將收到Twitter提供的用戶訪問令牌回撥。
  6. 保存令牌來擴展本地存儲,關閉該適配器頁面,你是好

彈出打開現在,當,你可以從本地存儲的OAuth2令牌與Twitter的API來使用。

Here is more detail about the OAuth2 flow.

回答您的UPDATE

從我可以在控制檯中看到它看起來好像背景頁面沒有找到。您的擴展程序是否有後臺頁面正在運行?如果是這樣,並且這是新添加的,則應使用chrome:// extensions的擴展名旁邊的重新加載按鈕重新加載擴展。當您更改清單中聲明的​​內容並且通常需要重新加載時,Chrome非常挑剔。但是chrome.extensions.getBackgroundPage()是一個標準的API調用,所以返回null是一個問題。

你看過我的解決方案嗎?它工作得非常好,速度非常快,可以自定義適配器頁面以顯示較慢連接的加載進度(用戶喜歡反饋)。它也不依賴於jQuery。你可能不會注意到它們的區別,但將jQuery庫加載到重定向頁面會使事務花費更長的時間,因爲腳本必須被拉入。

+0

@jjNford我搞砸了,是否可以讓我的東西運行或不運行。我多次在Chrome瀏覽器中重新加載了我的擴展程序。但它給了我同樣的錯誤。如果它沒有得到解決,我會看到你的代碼再次啓動它。 – 2012-03-02 07:22:12

+0

@TahirAkram你可以發佈你的清單文件給我看嗎? – jjNford 2012-03-02 13:30:13

+0

@ jjNford這裏是我的清單文件:'{ 「名」: 「分享Tweet從Chrome中」, 「版本」: 「1.0」, 「說明」: 「分享Tweet從Chrome中。」, 「browser_action」:{ 「default_icon」: 「的icon.png」, \t 「彈出」: 「popup.html」 }, 「權限」:[ 「選項卡」, \t 「http://ajax.googleapis.com」, \t「http://*.twitter.com/*」, \t「clipboardWrite」 ] }'我在另一個背景頁面(我稱之爲設置),其中用戶將添加它的Twitter帳戶。這不是我的主要背景頁面。 – 2012-03-02 15:08:47

相關問題