2017-09-22 12 views
1

私は、ユーザーが自分のコンテンツを見るためにアカウントにログインする必要があるChrome拡張機能に取り組んでいます。私がしたいのは、ユーザーがログインした後で、何らかのクッキーやlocalStorageに関連するログイン/セッションデータを保存することによって、毎回ログインする必要がないようにすることです。Chrome拡張機能 - ポップアップのログイン情報の保存

これまでのところ、Google ChromesローカルストレージAPIを使用すると、これを行う最善の方法と思われます(誰かがこれを確認できればすばらしいでしょう)。

私の問題は、ローカルストレージを設定して取得することです。

Popup.js:

function setCookie(){ 
    chrome.extension.sendMessage({name: 'setLoginCookie'}, function(otherResponse) { 
     console.log(otherResponse) 
    }) 
} 

function getCookie(){ 
    chrome.extension.sendMessage({name: 'getloginCookie'}, function(response) { 
     alert(response) 
    }) 
} 

event.js:

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) { 

    if (request.name == 'setLoginCookie') { 
     var obj = {test:"test"}  
     chrome.storage.sync.set(obj, function() { 
      alert('Data saved'); 
     });   
    }  

    if (request.name == 'getLoginCookie') { 
      chrome.storage.sync.get('test', function(data) { 
       sendResponse({ screenshotUrl: data.test }); 
     })  
    } 
    return true; 

}); 
私はちょうど試みるとChrome拡張のためのローカルストレージのいずれかの種類を格納するために取得するために、ここでの設定にダミーローカルストレージのシナリオをしました

setCookie機能が実行されると、「データが保存されました!」というアラートが表示されます。それは私にそれが働いていることを示すだろうが、私は自分の拡張機能のChromeデベロッパーツールのローカルストレージをチェックするときに何もないので、getCookieという関数を呼び出すと何も拾わない。

ここに私のmanifest.jsonをの権限は以下のとおりです。

"permissions": [ 
    "storage", 
    "cookies",  
    "tabs", 
    "<all_urls>", 
    "pageCapture", 
    "downloads"  
    ], 

は、私がここに間違ったアプローチを使用したことがありますか? chrome.storage.syncを使用しているのはおそらくどこが間違っていますか?

おかげ

+1

1. [Chrome拡張機能のデバッグ中にchrome.storage.syncを検査する](// stackoverflow.com/a/32471596)2。どのようにgetCookieを呼び出しますか? – wOxxOm

+0

ポップアップで直接データを格納して取得するだけではないのですか? 'chrome.storage.local'はバックグラウンドコンテキスト(ポップアップを含む)とコンテンツスクリプトの任意のページで利用できます。 – Makyen

答えて

1

chrome.storage.syncは、ローカルストレージと同じものではありませんが、あなたが開発ツールローカルストレージでこのメソッドを使用して保存されたデータは表示されません。

メッセージが一致しません。 {name: 'getloginCookie'}を使用してメッセージを送信し、ifの文がgetLoginCookieをチェックしています。相違点は、sendMessage関数に渡すパラメータの小文字のlです。

+0

これは問題と良い点でした。私のために愚かな間違い。ですから、chrome.storage.syncを使ってログイン/セッションの詳細を保存するのは正しいですか? –

+0

@BenLigerあなたはクローム拡張機能でログインしたセッションを保存するために何か他の方法を使うことができると結論づけましたか? ローカルストレージにユーザーパスワードを保存していないと、私は迷惑をかけています。 –

+0

@Hafizallylalani Chromeの拡張機能の詳細については、https://developer.chrome.com/apps/storage – Titus

1

私はクロームのdevのツール私の拡張機能のローカルストレージを確認したときに開発ツールは、それらの内側にchrome.storageを公開していないが、何も

はありません。

[ローカルストレージ]アイテムは、代わりにlocalStorageを公開します。

エクステンションのchrome.storageを検査するには、Storage Area Explorer extensionを使用するか、chrome.storage.sync.get(null, (data) => { console.log(data) })をコンソールから呼び出します。


注:イベントページにchrome.storageでの作業を委任する必要はありません。 chrome.storageは、背景、ポップアップ、オプション、コンテンツスクリプトのすべての拡張コンテキスト()から直接アクセス可能なです。このためにメッセージングをレイヤーしないでください。

+0

私はちょうど最後のパスの拡張機能が自分の内線にいくつかのセッションストレージを持っていることを知ったので、私は彼らがそれをやったのかと思っています! –

+1

拡張の中から 'sessionStorage' /' localStorage'を使用することはできますが、ドメインに結びついているので、コンテンツスクリプトとは共有されません。 'chrome.storage'はそれらの間で共有される新しいAPIです。 – Xan

関連する問題