我创建了一个基于 PhoneGap 的应用程序,并包含了我从该链接下载的相同代码:Building PhoneGap Mobile Applications Powered by Database.com
当我运行应用程序时,我可以看到登录屏幕。这是屏幕截图:
当我单击登录按钮时,什么也没有发生,我在同一页面中。我已经在salesforceWrapper.js
文件中包含了我的 cosumer 密钥,如下所示:
function SalesforceWrapper() {
/* AUTHENTICATION PARAMETERS */
this.loginUrl = 'https://login.salesforce.com/';
this.clientId = 'sadsadasdadadasdasdasdsadasdas.dsddsd_sdsds.dsdsdsdsdsds';
this.redirectUri = 'https://login.salesforce.com/services/oauth2/success';
/* CLASS VARIABLES */
this.cb = ChildBrowser.install(); //ChildBrowser in PhoneGap
this.client = new forcetk.Client(this.clientId, this.loginUrl); //forceTk client instance
this.init();
}
为什么我无法重定向到 salesforce 登录页面?这是控制台输出:
2012-06-25 16:20:53.023 J[2396:13403] Opening Url : https://login.salesforce.com/services/oauth2/authorize?display=touch&response_type=token&client_id=sadsadasdadadasdasdasdsadasdas.dsddsd_sdsds.dsdsdsdsdsds&redirect_uri=https%3A//login.salesforce.com/services/oauth2/success
2012-06-25 16:20:53.024 J[2396:13403] *** WebKit discarded an uncaught exception in the webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate: <NSInvalidArgumentException> Application tried to present modally an active controller <MainViewController: 0x9a67dc0>.
2012-06-25 16:20:53.034 J[2396:13403] ERROR whitelist rejection: url='https://login.salesforce.com/services/oauth2/authorize?display=touch&response_type=token&client_id=sadsadasdadadasdasdasdsadasdas.dsddsd_sdsds.dsdsdsdsdsds&redirect_uri=https%3A//login.salesforce.com/services/oauth2/success'
向 Cordova.plist 添加了 ChildBrowserCommand 和 ChildBrowser 字段。
在 Index.html 页面中包含脚本文件路径:
<script type="text/javascript" charset="utf-8" src="ChildBrowser.js"></script>
这是我的 Xcode 项目截图:
我已经解决CDVPlugin
了参考问题并得到了WebKit discarded an uncaught exception
问题。我该如何解决这个问题?
通过向 Crodova.plist 中的 ExternalHosts 添加额外参数来解决它。