0

这些天来,我正在尝试运行 Adob​​e 技术布道者 Andrew Trice 的现有代码。这个概念是将 database.com 数据库连接到电话间隙应用程序。这是带有源代码的教程:

http://wiki.developerforce.com/page/Building_PhoneGap_Mobile_Applications_Powered_by_Database.com

问题 :

成功安装 Childbrowser 后,代码中出现特定错误:

未捕获的类型错误:无法读取文件中未定义的属性“ChildBrowser”:///android_asset/www/js/salesforceWrapper.js:17

这是完整的代码:(我在错误所在的行中添加了注释)

function SalesforceWrapper() {
    /* AUTHENTICATION PARAMETERS */
    this.loginUrl = 'https://login.salesforce.com/';
    this.clientId = '3MVG99qusVZJwhsmjZIlEaUsFRnadOib8Kv_MPwooFMEi.XpChrZ5cVEcKU_7NR1zfQjjmdHI7wMARXnLlgku';
    this.redirectUri = 'https://login.salesforce.com/services/oauth2/success';

    /* CLASS VARIABLES */
    this.cb = undefined;     //ChildBrowser in PhoneGap
    this.client = undefined; //forceTk client instance

    this.init();
}

SalesforceWrapper.prototype.init = function() {
    this.client = new forcetk.Client(this.clientId, this.loginUrl);
 // line 17 with the error
    this.cb = window.plugins.childBrowser;
}

SalesforceWrapper.prototype.login = function (successCallback) {
    this.loginSuccess = successCallback;
    var self = this;
    self.cb.onLocationChange = function (loc) {             
        if (loc.search(self.redirectUri) >= 0) {
            self.cb.close();
            self.sessionCallback(unescape(loc));
        }
    };
    self.cb.showWebPage(self.getAuthorizeUrl(self.loginUrl, self.clientId, self.redirectUri));
}

SalesforceWrapper.prototype.getAuthorizeUrl = function (loginUrl, clientId, redirectUri) {
    return loginUrl + 'services/oauth2/authorize?display=touch' + '&response_type=token&client_id=' + escape(clientId) + '&redirect_uri=' + escape(redirectUri);
}

SalesforceWrapper.prototype.sessionCallback = function(loc) {    var oauthResponse = {};

    var fragment = loc.split("#")[1];

    if (fragment) {
        var nvps = fragment.split('&');
        for (var nvp in nvps) {
            var parts = nvps[nvp].split('=');
            oauthResponse[parts[0]] = unescape(parts[1]);
        }
    }

    if (typeof oauthResponse === 'undefined' || typeof oauthResponse['access_token'] === 'undefined') {
        console.log("error");
    } else {
        this.client.setSessionToken(oauthResponse.access_token, null, oauthResponse.instance_url);
        if ( this.loginSuccess ) {
            this.loginSuccess();
        }
    }
    this.loginSuccess = undefined;
}

ADOBE 的电话间隙是一个危险的工具,但它仍然很难操作。

先感谢您提出可能的建议。在这一点上,我不希望得到答案。我知道有一个很大的距离...

4

1 回答 1

0

好吧,人们的问题是由于 index.html 引起的,其中 childbrowser.js 的引用位于不同的文件夹中。

它是在 :

<script type="text/javascript" src="js/libs/ChildBrowser.js"></script>

代替 :

<script type="text/javascript" src="js/ChildBrowser.js"></script> 

所以人们要小心!!!

现在我的问题与另一个函数有关,但我认为它是类似的。

谢谢你们!

如果您知道一些事情,请尝试回答。

于 2013-07-09T20:27:48.950 回答