我正在尝试按照https://help.rallydev.com/apps/2.0rc3/doc/#!/guide/embedding_apps中的说明使用alm-wsapi-read-only API密钥。我使用rally-app-builder创建了一个简单的缺陷查询应用程序。当我退出Rally时,我尝试使用Chrome浏览器中的以下语法查看缺陷网格,我在其中插入apiKey代替“key here”:
file:/// C:/ProjectWork/RallyGitHub/rally-app-defect-metrics/deploy/App-external.html?apiKey =“key here”
加载此页面时会询问我的Rally登录凭据,而不是默认为嵌入在API密钥中的Rally用户。
我正在做错的任何帮助?
此文件中的应用代码如下:
<!DOCTYPE html>
<html>
<head>
<title>DefectMetrics</title>
<script type="text/javascript" src="https://rally1.rallydev.com/apps/2.0rc3/sdk.js"></script>
<script type="text/javascript">
Rally.onReady(function () {
Ext.define("CustomApp",{extend:"Rally.app.App",componentCls:"app",launch:function(){Rally.data.ModelFactory.getModel({type:"Defect",success:function(model){this.grid=this.add({xtype:"rallygrid",model:model,columnCfgs:["FormattedID","Name","State","Owner"],storeConfig:{filters:[{property:"State",operator:"=",value:"Closed"}]}})},scope:this})}});
Rally.launchApp('CustomApp', {
name:"DefectMetrics",
parentRepos:""
});
});
</script>
</head>
<body>
</body>
</html>
答案 0 :(得分:1)
通过file:// URL访问时,AppSDK2.0rc3应用程序使用JSONP:
这不允许在请求标头中设置API密钥,因此您可以通过基本身份验证提示您输入凭据。
当按Embedding Apps help document中所述运行rally-app-builder run
时,您正在通过node.js服务器运行,允许AppSDK2使用CORS,并且可以根据需要设置apiKey。请求标题为Rally。
请注意rally-app-builder run
最初会显示:
http://localhost:1337/App-debug.html
在您的默认浏览器中,它会提示您输入凭据。但是,如果您手动将api密钥附加到URL:
http://localhost:1337/App-debug.html?apiKey=_m9XjyrgVQ6
并刷新,应用程序将呈现而无需输入凭据。