0

我创建并分发了一个区块链工作台项目。我可以访问 Azure Blockchain Workbench 客户端网站,在那里我可以创建合同、采取行动等。

我尝试开发一个简单的程序来使用 Azure Blockchain Workbench REST API 与我自己的应用程序与区块链进行交互。

在调用任何 API 函数之前,我得到了身份验证令牌(我希望它是正确的,因为我得到了令牌的值)

如果现在我尝试调用 API 函数“ https://myblockchain-xyz-api.azurewebsites.net/api/v2/users ”,那么我会得到用户列表。

但是,如果现在我尝试调用有关区块链应用程序的任何其他函数,例如“/api/v2/applications”,我会得到返回码 204“无内容”。

如果我尝试调用例如“/api/v2/applications/2/workflows”,那么我会得到 404“未找到”

在 API 调用之后:

Dim MyOauthToken As String = 
Utilities.BlockchainAuthentication.GetAuthenticationToken().Result

Dim MyHttpClient As New HttpClient()
MyHttpClient.DefaultRequestHeaders.Authorization = New AuthenticationHeaderValue("Bearer", MyOauthToken)
'--------------------------------------------------------
'Force security protocol
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 Or SecurityProtocolType.Tls Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls12
'---------------------------------------------------------
'Get list of applications
Dim MyServiceUriString As String = "https://myblockchain-xyz-api.azurewebsites.net/api/v2/users/applications"
Dim MyResponse As Task(Of HttpResponseMessage) = MyHttpClient.GetAsync(MyServiceUriString)
MyResponse.Wait()

“应用程序”功能的结果是 204“无内容”如果我执行相同的调用“.../api/v2/users”它可以工作并且我得到所有用户。

有人可以帮忙吗?

我试图打电话给“../users/me”看看会发生什么,我得到以下结果(我不知道这是否有帮助):

{"currentUser":{"userID":7,"externalID":"1r67sf88-5b49-47da-a27a-79g3gg345","firstName":null,"lastName":"","emailAddress":null,"userChainMappings" :[{"userChainMappingID":5,"userID":7,"connectionID":1,"chainIdentifier":"0x32cfcf169813364563456348c99b9","chainBalance":null}]},"capabilities":{"canUploadApplication":false," canUploadContractCode":false,"canModifyRoleAssignments":false,"canProvisionUser":false,"canUpgradeWorkbench":false}}

4

1 回答 1

0

问题是链下数据库中的默认用户(通过部署 Azure Blockchain Workbench 创建)未映射到任何应用程序。就像解决方法一样 - 您始终可以在 DB 中手动添加此映射,之后您将能够获取应用程序(并使用合同等)。

你需要做什么:

  1. 查找使用 Azure Blockchain Workbench 进行预配的应用程序(Web api)的外部用户 ID。

    • 导航到 Azure Azcive 目录
    • 企业应用
    • 在下拉列表中选择所有 apss,然后按应用
    • 现在你可以看到类似的东西Azure Blockchain Workbench blockchaintest-XXXXX
    • 选择一个项目,您将在浏览器地址栏中获得 external_id(行中的最后一个 guid)
  2. 查找您创建并查找 SQL 数据库的 AZ BCW 资源组

  3. 用于附加到数据库的用户查询编辑器(预览版)
  4. 在步骤 1 中使用 external_id 在 dbo.User 中查找用户 ID
  5. 在 dbo.Application 中查找应用程序 ID
  6. 使用步骤 4 中的用户 ID 和步骤 5 中的应用程序 ID 将新记录添加到 dbo.RoleAssignment

现在这应该有效

curl -H "Authorization: Bearer ${TOKEN}" -X GET 'https://blockchaintest-XXXXX-api.azurewebsites.net/api/v1/applications?isLatestVetsion=true' 
{"nextLink":"/api/v1/applications?skip=1","applications":[{"id":10,"version":"9.0","name":"CCCCC","description":"CCCCCCC","displayName":"CCCCCCCC","createdByUserId":2,"createdDtTm":"2019-04-30T05:13:40.87","enabled":true,"blobStorageURL":null,"isLatestVersion":null,"applicationRoles":null}]}
于 2019-04-30T08:31:03.917 回答