1

大家好,我需要帮助自动登录到 youtube.com 以上传“基于浏览器”的视频(然后通过 api 获取数据以在站点中显示)。所以基本上我从这里下载了扩展http://framework.zend.com/downloads/latest Zend Gdata。并让它发挥作用。

它工作正常(演示/.../YouTubeVideoApp)。但是我如何在没有确认页面的情况下自动登录 youtube(“授予访问权限”\“拒绝访问”)?目前我使用开发者密钥来处理 youtube api。

确认信息是

 An anonymous application is requesting access to your Google Account for the product(s) listed below.
    YouTube
If you grant access, you can revoke access at any time under 'My Account'. The anonymous application will not have access to your password or any other personal information from your Google Account. Learn more
This website has not registered with Google to establish a secure connection for authorization requests. We recommend that you continue the process only if you trust the following destination:
     http://somedomain/operations.php

一般来说,我需要创建与 youtube 的连接(通过 api)并在那里上传(使用我自己的帐户)视频,而不需要任何弹出窗口和确认页面。

4

1 回答 1

1

我认为您需要的只是获取访问令牌并将其设置为会话值“$_SESSION['sessionToken']”。需要结合 javascript 和 PHP 来执行此操作。以前我在使用 Picasa Web API 时总是必须授予访问权限或拒绝它,但在我在下面描述的更改之后,不再需要授予或访问页面。

我尚未将 youtube 与 zend Gdata 集成,但已使用它集成了 Picasa 网络相册

使用 javascript 弹出窗口进行登录并获取所需范围的令牌。下面是一个javascript代码。将您的范围更改为 youtube 数据,就像使用 picasa 的这个范围一样。. 单击按钮 onclick 上的“picasa”功能。

var OAUTHURL    =   'https://accounts.google.com/o/oauth2/auth?';
var VALIDURL    =   'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=';
var SCOPE       =   'https://picasaweb.google.com/data';
var CLIENTID    =   YOUR_CLIENT_ID;
var REDIRECT    =   'http://localhost/YOUR_REDIRECT_URL'
var LOGOUT      =   'http://accounts.google.com/Logout';
var TYPE        =   'token';
var _url        =   OAUTHURL + 'scope=' + SCOPE + '&client_id=' + CLIENTID + '&redirect_uri=' + REDIRECT + '&response_type=' + TYPE;
var acToken;
var tokenType;
var expiresIn;
var user;
var loggedIn    =   false;

function picasa() {
    var win         =   window.open(_url, "windowname1", 'width=800, height=600'); 

    var pollTimer   =   window.setInterval(function() { 
        console.log(win);
        console.log(win.document);
        console.log(win.document.URL);
        if (win.document.URL.indexOf(REDIRECT) != -1) {
            window.clearInterval(pollTimer);
            var url =   win.document.URL;
            acToken =   gup(url, 'access_token');
            tokenType = gup(url, 'token_type');
            expiresIn = gup(url, 'expires_in');
            win.close();

            validateToken(acToken);
        }
    }, 500);
}

function validateToken(token) {
    $.ajax({
        url: VALIDURL + token,
        data: null,
        success: function(responseText){  
            //alert(responseText.toSource());
            getPicasaAlbums(token);
            loggedIn = true;
        },  
        dataType: "jsonp"  
    });
}

function getPicasaAlbums(token) {
    $.ajax({
    url: site_url+"ajaxs/getAlbums/picasa/"+token,
    data: null,
    success: function(response) {
        alert("success");

    }
});
}

//credits: http://www.netlobo.com/url_query_string_javascript.html
function gup(url, name) {
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\#&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( url );
    if( results == null )
        return "";
    else
        return results[1];
}

在这里,我在函数“getPicasaAlbums”中进行 ajax 调用,并将令牌设置为 $_session,之后我可以使用 zend 查询获取专辑列表。这是我在函数“getPicasaAlbums”中使用 ajax 调用的一些 php 文件代码。

function getAlbums($imported_from = '',$token = '') {
    //echo $imported_from; //picasa
    //echo $token; 

    $_SESSION['sessionToken'] = $token;// set sessionToken
            $client = getAuthSubHttpClient();
            $user = "default";

            $photos = new Zend_Gdata_Photos($client);
            $query = new Zend_Gdata_Photos_UserQuery();
            $query->setUser($user);

            $userFeed = $photos->getUserFeed(null, $query);

echo "<pre>";print_r($userFeed);echo "</pre>";exit;
}

我认为这将对您的任务有所帮助。将“getAlbums”函数代码与您的 youtube zend 数据代码相结合以检索数据。

登录弹出窗口的好例子和参考在这里

http://www.gethugames.in/blog/2012/04/authentication-and-authorization-for-google-apis-in-javascript-popup-window-tutorial.html

于 2013-06-22T06:32:57.247 回答