适用于Office的应用程序:我的任务窗格应用程序未获得许可'?et ='许可证令牌

时间:2014-07-28 08:55:02

标签: ms-office apps-for-office

MSDN文档说:

  

调用您应用的URL的Office应用程序将添加以下查询   字符串,然后传递URL:http://fooservice.com/index.htm?et=   PAByAD4APAB0ACAAYQBpAGQAPQ ....( - >这个字符串会持续一段时间 - Mihaly KR)

我已经尝试了所有内容,但没有任何内容被POST(或GET),没有?et参数。

该应用程序在Office中加载正常,但我想从令牌获取客户端ID,因此我可以在我的服务器上执行永久存储。 我做了一个php页面,打印所有get和post参数,并将其设置为APP源,所以我可以看到,发布了什么。

我的清单文件taskpaneapp.xml

<?xml version="1.0" encoding="utf-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:type="TaskPaneApp">
  <Id>08afd7fe-1631-42f4-84f1-5bc51e242f98</Id>
  <Version>1.0</Version>
  <ProviderName>Microsoft</ProviderName>
  <DefaultLocale>EN-US</DefaultLocale>
  <DisplayName DefaultValue="Get token"/>
  <Description DefaultValue="Test app for getting token"/>
  <IconUrl DefaultValue=
    "http://officeimg.vo.msecnd.net/_layouts/images/general/office_logo.jpg"/>
  <Capabilities>
    <Capability Name="Document"/>
    <Capability Name="Workbook"/>
  </Capabilities>
  <DefaultSettings>    
    <SourceLocation DefaultValue="http://taskpaneapp.misc.dev.nomo.hu/print_r.php"/>    
  </DefaultSettings>
  <Permissions>ReadWriteDocument</Permissions>
</OfficeApp>

我的令牌文件taskpaneapp.tok

<r>
  <t 
    aid="WA900006056" 
    pid="{08afd7fe-1631-42f4-84f1-5bc51e242f98}" 
    cid="32F3E7FC559F4F49" 
    did="{0672BAE9-B41B-48FE-87F1-7F4D3DD3F3B1}" 
    ts="30" 
    et="Trial" 
    ad="2012-01-12T21:58:13Z" 
    ed="2012-06-30T21:58:13Z" 
    sd="2012-01-12T00:00:00Z" 
    te="2012-06-30T02:49:34Z" />
  <d>VNNAnf36IrkyUVZlihQJNdUUZl/YFEfJOeldWBtd3IM=</d>
</r>

MSDN文档在令牌文件架构上不一致,有些在pid中使用{},而有些则没有。我试过了两个,没有一个工作过。

我的注册表项是:

key: taskpaneapp
value: \\NOMONAS\....\taskpaneapp.xml

我试过

key: entry1
value: \\NOMONAS\.....\taskpaneapp.xml

也是,它不起作用。

MSDN文档是否已过时?不这么认为,它们在2014年的Febr中更新,据说与Office Apps JS API 1.0和1.1兼容

任何人都有同样的问题吗?

如果您有任何建议或遇到同样的问题,请帮助我。任何建议都将不胜感激。


更新1:所以我发现Office已成功读取令牌文件。

将许可证状态设置为“试用”时,任务窗格应用程序启动时会在左上角显示通知。 MSDN文档非常令人困惑,here it says,该令牌文件pid参数必须放在括号here it is used without brackets中。经过大量的反复试验后,只有当pid 在括号中时才会读取令牌文件。

最重要的是,我将.tok文件更改为包含pid="{08afd7fe-1631-42f4-84f1-5bc51e242f98}"。我想我会将Token Schema页面设为true,所以我更改了cid和aid属性以包含{} - s。

但我仍然没有得到?et参数。

1 个答案:

答案 0 :(得分:2)

原来这是一个Office bug(duh)。 在这个forum post中,微软官员说:

  

在我的研究之后,似乎这是Office 15的“已知问题”   SP1,因为从注册表加载的应用程序没有得到et   按预期返回。

解决方法:

?et获取参数放入xml,并忘记MSDN文档告诉您的.tok文件和编辑注册表的所有内容。

<SourceLocation DefaultValue= “http://myofficeapp.com?et=<base64 encoded token>”

为方便起见,这是MSDN文档中的示例令牌字符串

http://myApp/index.htm?et=PAByAD4APAB0ACAAYQBpAGQAPQAiAFcAQQAxADAAMgA4ADkAOQA1ADYANgAiACAAcABpAGQAPQAiADMAZAAyADgANwAwADcAYQAtAGYAYwBjAGUALQA0ADUAMQA3AC0AYQBjADYAZQAtAGMAYQAwAGEAZABkADYAMwA3ADMAYQBhACIAIABjAGkAZAA9ACIAMgAzAEEANwBFAEIAOABBADQAQwA0ADcARgA1AEEAMgAiACAAdABzAD0AIgAwACIAIABzAGwAPQAiAHQAcgB1AGUAIgAgAGUAdAA9ACIARgByAGUAZQAiACAAYQBkAD0AIgAyADAAMQAyAC0AMAA1AC0AMgAyAFQAMQA4ADoAMQAyADoAMgAzAFoAIgAgAHMAZAA9ACIAMgAwADEAMgAtADAANQAtADIAMgAiACAAdABlAD0AIgAyADAANgA3AC0AMAAyAC0AMgAzAFQAMQA4ADoAMQA0ADoAMAAwAFoAIgAgAC8APgA8AGQAPgAyADIAWABLAEEAdgA0ADMAQgBtAHMAcwByADAAcgBxADUANQBGAHUAdgBpAFUAVgBSAGkAVgBLAFMASQBEAGcAeAAyAHAAMgA0AFoAZwBzAGwANgBNAD0APAAvAGQAPgA8AC8AcgA%2bAA%3d%3d