我已经创建并分发了一个区块链工作台项目。 我可以访问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}]},“功能”:{“ canUploadApplication”: false,“ canUploadContractCode”:false,“ canModifyRoleAssignments”:false,“ canProvisionUser”:false,“ canUpgradeWorkbench”:false}}
答案 0 :(得分:0)
问题在于,链外数据库中的默认用户(通过部署Azure区块链工作台创建)未映射到任何应用程序。 就像解决方法一样,您始终可以在数据库中手动添加此映射,之后便可以获取应用程序(并使用合同等)。
您需要做什么:
查找应用程序(Web API)的外部用户ID,该ID是使用Azure区块链工作台进行配置的。
Azure Blockchain Workbench blockchaintest-XXXXX
查找您创建并找到SQL数据库的AZ BCW资源组
现在这应该可行
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}]}