Javascript Adobe DPS Web Viewer身份验证

Javascript Adobe DPS Web Viewer身份验证,javascript,adobe-dps,Javascript,Adobe Dps,我正在尝试使用Adobe的数字出版套件Web Viewer。我已经正确设置了Web Viewer,它在我的网站中工作。但是,这并不是验证每个用户是否有权访问Web查看器正在访问的对开本。Adobe对如何做到这一点有一定的了解,但他们的文档似乎缺乏。似乎Adobe要求我将用户的用户名和密码输入Adobe,但这不可能是正确的。我怀疑Adobe会邀请钓鱼。但这不是我唯一迷失的一点 我当前的脚本如下: var wvQueryParamGroups = location.search.match(

我正在尝试使用Adobe的
数字出版套件Web Viewer。
我已经正确设置了Web Viewer,它在我的网站中工作。但是,这并不是验证每个用户是否有权访问Web查看器正在访问的对开本。Adobe对如何做到这一点有一定的了解,但他们的文档似乎缺乏。似乎Adobe要求我将用户的用户名和密码输入Adobe,但这不可能是正确的。我怀疑Adobe会邀请钓鱼。但这不是我唯一迷失的一点

我当前的脚本如下:

    var wvQueryParamGroups = location.search.match(/[?&^#]wv=(s[\/%\-.\w]+)/),
    wvQueryParam = wvQueryParamGroups && wvQueryParamGroups.length === 2 ? decodeURIComponent(wvQueryParamGroups[1]) : null;

    function loadXMLDoc(url, successCallback, failCallback) {
        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        }
        else {// code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                var parser = new DOMParser();
                var xmlDoc = parser.parseFromString(xmlhttp.responseText, "application/xml");
                successCallback(xmlDoc);
            } else if (xmlhttp.readyState == 4 && xmlhttp.status == 0) {
                alert("unsuccessful cross-domain data access attempt?");
                failCallback(xmlhttp.status);
            } else if (xmlhttp.readyState == 4) {
                failCallback(xmlhttp.status);
            } else {
                console.log('readystate=' + xmlhttp.readyState + ', status=' + xmlhttp.status);
            }
        }
        xmlhttp.open("GET", url, true);
        xmlhttp.send();
    }

    function directEntitlementSignIn(directEntitlementURL, emailAddress, password, appID, authTokenSuccess, authTokenFail) {
        var response;
        if (!authTokenSuccess || !authTokenFail) {
            throw new Error('Callbacks are required: ');
        }
        loadXMLDoc(directEntitlementURL + '?emailAddress=' + emailAddress + '&password=' + password + '&appId=' + appID,
        handleToken = function (data) {
            token = data.documentElement.childNodes[0].innerHTML;
            authTokenSuccess(token);
        }
        );
    }

    function onAuthTokenSuccess(token) {
        alert(token);
        // pass the token into the Authenticator class's login method
    }

    function onAuthTokenFail(status) {
        alert("fail: " + status);
        // prompt the user to try logging in again
    }

    function signIn(emailAddress, password) {
        var deAPIURL = 'http://127.0.0.1/hostDemos r27/authHard/test.php';
        var emailAddress; // user's login ID.....get from form
        var password; // user's password ... get from form
        var appID = 'com.publisher.magazine';

        directEntitlementSignIn(deAPIURL, emailAddress, password, appID, onAuthTokenSuccess, onAuthTokenFail);
    }

    function eventCallback(ev) {
        if (ev.eventType == "paywall") {
            return false;
        }
        if (ev.eventType == "metadata") {
            return true;
        }
        console.log(ev);
        return true;
    }

    function errorCallback (message) {
        console.log(message);
        return true;
    }

    function redirectCallbackHandler (message) {
        console.log(message);
    }

    var wv_appName = "Professional Roofing";
    var wv_accountID = Account_ID_Is_Here; //Hiding account ID purposely
    var wv_folio = "August 2014 Issue";
    var wv_article = "Cover";
    var wv_url = '/s/' + wv_appName + '/' + wv_accountID + '/' + wv_folio + '/' + wv_article + '.html';
    console.log(wv_url);

    var bridge = adobeDPS.frameService.createFrame({
        boolIsFullScreen : true,
        parentDiv : 'mainContainer',
        wrapperClasses : 'uniqueFrame',
        iframeID : 'demoFrame',
        accountIDs : wv_accountID,
        wvParam : wvQueryParam ? wvQueryParam : wv_url,
        curtainClasses : 'mask hidden',
        eventCallback : eventCallback,
        errorCallback : errorCallback,
        redirectCallback : redirectCallbackHandler
    });

Adobe不需要您的用户名和密码,他们需要身份验证令牌。 要使其正常工作,您需要:

  • 实现直接授权API
  • 请您在Adobe中的帐户代表创建一个integrator id
之后,您需要创建一个验证器:

  auth = adobeDPS.authenticationService.createAuthenticator(strAccountID, strIntegratorID);
并将authToken传递给它

 auth.login(token, successCalck, errorCallback)

哦,好的,谢谢你!它现在起作用了。现在,如果他们的登录是无效的,他们不会得到对开本。但是,如果他们登录,即使他们不应该访问对开本,他们也会得到它。Noah如果您的授权服务器没有返回用户有权访问该产品id,那么他们只有在对开本生产者中作为公共和免费发布时才有权访问对开本