Javascript Youtube Data API v3,OAuth2 - 错误403

时间:2016-11-21 17:06:53

标签: javascript google-chrome-extension youtube-data-api

我正在使用Youtube Data V3 Javascript API制作Chrome扩展程序。我的问题是,我的帐户一切正常,但如果我将应用程序提供给其他人,则会出现错误403.

问题当然是因为没有显示提供应用程序帐户访问权限的弹出窗口。但事实是我正在使用Youtube提供的代码来授予访问权限。 (这一个:https://developers.google.com/youtube/v3/code_samples/javascript#authorizing_requests

令牌仅用于我的选项页面。

这是我的代码:

的manifest.json:

{
"manifest_version": 2,

"name": "Youtube Subsfeed Sorter",
"description": "YSS",
"version": "1.6",

"options_ui":
{
    "page": "options.html"
},

"icons":
{ 
    "128": "LogoYSS.png"
},

"browser_action":
{
    "default_popup": "popup.html"
},

"content_security_policy": "script-src https://*.google.com 'unsafe-eval'; object-src 'self'",

"content_scripts": 
[
    {
        "matches": [ "*://www.youtube.com/*" ],
        "css" : ["./css/contentScript.css"],
        "js": ["./lib/jquery-3.1.0.min.js", "contentScript.js"],
        "run_at":"document_start",
        "all_frames": true
    }
],

"background":{
    "scripts": ["background.js"],
    "persistent": false
},

"permissions":
[
    "*://www.youtube.com/*",
    "*://apis.google.com/*",
    "identity",
    "storage",
    "tabs",
    "activeTab"
],

"oauth2": 
{
    "client_id":"MyClientId",
    "scopes":
    [ 
        "https://www.googleapis.com/auth/youtube.readonly"
    ]
},

"key": "MyKey"

}

Options.html

<!DOCTYPE html>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">


<html>
    <head>
        <title>Jstree Options text</title>
        <link href="./css/font-awesome.min.css" rel="stylesheet" />
        <link href="./css/options.css" rel="stylesheet" />
        <link href="./css/themes/default/style.min.css" rel="stylesheet" />
        <script type="text/javascript" src="./lib/jquery-3.1.0.min.js"></script>
        <script type="text/javascript" src="./lib/jstree.min.js"></script>
        <script type="text/javascript" src="./lib/auth.js"></script>
        <script type="text/javascript" src="options.js"></script>
        <script src="https://apis.google.com/js/client.js?onload=googleApiClientReady"></script>
    </head>
    <body>
        <div id="tab-menu" >
            <div id="title">
                <p><img src="LogoYSS.png">Options</img></p>
                <ul class="menu">
                    <li><a id="tab-menu-button" href="#">Onglets</a></li>
                    <li><a id="showing-menu-button" href="#">Affichage</a></li>
                </ul>
            </div>
            <div id="Container">
                <div id="ContainerLeft">
                    <form>
                        <p style="font-weight: bold;">Créer un nouvel onglet :</p>
                        <input type="text" id="newtabname" name="newtabename">
                        <button type="button" class="button" id="newtabadd"><i class="fa fa-plus fa-2x" aria-hidden="true" ></i></button>
                        <p>
                            <button type="button" class="button" id="save"><i class="fa fa-save fa-2x" aria-hidden="true" ></i></button>
                            <button type="button" class="button" id="expandall"><i class="fa fa-expand fa-2x" aria-hidden="true" ></i></button>
                            <button type="button" class="button" id="collapseall"><i class="fa fa-compress fa-2x" aria-hidden="true" ></i></button>
                        </p>
                    </form>
                    <div id="tab"></div>
                </div>

                <div id="channel"></div>
            </div>
        </div>
        <div id="showing-menu">
            <input type="color">Choisir la couleur de fond de la page youtube</input>
        </div>
    </body>
</html>

我的Options.js的一部分:

   function handleAPILoaded()
    {
        init();
        requestUserSubscriptionList("");
    }

    function requestUserSubscriptionList(nextPageToken) 
    {
            var request = gapi.client.youtube.subscriptions.list({
                part: 'snippet',
                maxResults: 50,
                mine: true,
                fields: 'items,nextPageToken',
                order: 'alphabetical',
                pageToken: nextPageToken
            });

            request.execute(function(responseCallBack) 
            {
                nextPageToken = responseCallBack.nextPageToken;

                $.each(responseCallBack.items,function(index,item)
                {
                    if(!/.png/i.test(item.snippet.thumbnails.default.url))
                    {
                        var subNode = {"id" : item.snippet.title , "text": item.snippet.title, "icon" : item.snippet.thumbnails.default.url, "type" : "ChannelSub", "data" : {"channelId" : item.snippet.resourceId.channelId}};
                        $('#channel').jstree().create_node('#',subNode,"last",function(){});
                    }
                });

                if(nextPageToken)
                {
                    requestUserSubscriptionList(nextPageToken);
                }
            });
    }

所以,如果有人能给我一些帮助,我会非常感激。

编辑1: 这是我没有连接时得到的错误(这是我朋友们的错误数据)

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "dailyLimitExceededUnreg",
    "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
    "extendedHelp": "https://code.google.com/apis/console"
   }
  ],
  "code": 403,
  "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
 }
}

希望有所帮助。

0 个答案:

没有答案