【问题标题】:Issue with existing phone gap code demonstrated by adobeadobe 演示的现有电话间隙代码问题
【发布时间】:2013-06-26 13:10:34
【问题描述】:

这些天来,我正在尝试运行来自 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 的电话间隙是一个危险的工具,但它仍然很难操作。

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

【问题讨论】:

    标签: android eclipse cordova adobe


    【解决方案1】:

    问题是由于 index.html 中 childbrowser.js 的引用位于不同的文件夹中引起的。

    它在:

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

    而不是:

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

    所以人们要小心!!!

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

    谢谢大家!

    如果您知道,请尝试回答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      • 2015-03-18
      相关资源
      最近更新 更多