0

私は物事が進んでいると思っていましたが、interactive:false で getAuthToken を呼び出した後にこのエラーがあることを発見しました:

OAuth2 リクエストが失敗しました: サービスがエラーで応答しました: 'Bad Request'

「Bad Request」は本当にほとんど何も教えてくれません。わかりました、おそらく interative:true を使用する必要があることを理解しています (なぜですか?) ので、それを試みると、ブラウザが起動し、Google ログインが求められます (これを入力しますが、これは 2 段階であるため非常に面倒です)認証)、その後は...何も...コールバックは呼び出されません...

私を助けることに興味がある人は、おそらく私のmanifest.jsonのビットを見たいと思うでしょう:

"key": "MII...QAB",
"oauth2": {
    "client_id": "35...-lnf...1pd.apps.googleusercontent.com",
    "scopes": [ "identity" ]
},
"permissions":[ "identity", "https://accounts.google.com/*", "https://www.googleapis.com/*", "https://*.amazonaws.com/*", "<all_urls>" ],

また、おそらく問題のコードを見たいと思うでしょう:

chrome.identity.getAuthToken({ 'interactive': true, 'scopes':['identity'] }, function ( token ) {
    if ( chrome.runtime.lastError ) {
        next(chrome.runtime.lastError);
    } else {
        next( null, token );
    }
});

または、代わりに:

chrome.identity.getAuthToken({ 'interactive': false }, function ( token ) {
    if ( chrome.runtime.lastError ) {
        next(chrome.runtime.lastError);
    } else {
        next( null, token );
    }
});

どこが間違っているのかを特定するのに役立つその他の情報を提供できれば幸いです。

4

1 に答える 1

0

Chrome のドキュメントには、インタラクティブ オブジェクトのブール値の目的/意味が記載されています。トークンを取得するには、ユーザーが Chrome にサインインするか、アプリケーションの要求されたスコープを承認する必要がある場合があります。interactiveフラグがtrueの場合、getAuthToken必要に応じてユーザーにプロンプ​​トが表示されます。フラグが指定されているfalseか省略されている場合getAuthToken、プロンプトが必要になるたびに失敗が返されます。

今あなたのエラーのためにOAuth2 request failed: Service responded with error: 'Bad Request'

OAuth クレデンシャルを作成する際の同意画面で、電子メール アドレスと製品名を必ず入力してください。

詳細については、このスレッドを確認してください。

于 2016-08-09T09:58:19.950 に答える