Gaia-4-Hubs and user choice
FROM : https://docs.blockstack.org/storage/hub-choice.html#enabling-hub-selection-in-your-dapp
Blockstack在https://hub.blockstack.org上运行一个默认的Gaia存储中心。个人或组织也可以经营他们自己的中心,或者作为营利性服务,或者出于其他原因。
背景
在blockstack网络中具有身份的每个用户的配置文件上都配置了一个Gaia Hub。使用blockstack浏览器自动创建身份的新用户将在这个默认集线器上获得存储。要让用户拥有除此缺省值之外的存储中心,用户必须通过启用存储中心选择的应用程序创建标识。
为新用户启用Gaia hub URL选项
Blockstack应用程序的一个主要原则是DApps不存储或复制用户数据。通过Gaia功能,Blockstack试图让用户选择在哪里存储数据以及如何管理数据。
作为实现这一原则的一个步骤,DApp开发人员可以配置他们的应用程序,以提示新用户提供一个Gaia hub URL。启用此功能的应用程序会向用户显示第一次创建标识时的提示符:
image用户可以选择使用Blockstack的官方提供程序或使用其他提供程序。选择非默认选项提示用户如下:
image
用户可以输入由blockstack以外的实体承载的Hub的HTTPS地址。一旦用户提交了上面的表单,他们将继续创建标准标识。由于他们在blockstack网络上使用DApps,他们的所有数据都存储在这个存储中心,而不是默认的blockstack中心。
在您的DApp中启用Hub选择
要启用此功能,您必须确保您的DApp使用的是最新版本的blockstack.js库。您必须使用makeAuthRequest()方法,而不是默认的流redirectToSignIn()方法。该方法采用以下参数:
transitprivatekey(string = generateandstoretransitkey())
一种十六进制编码的传输专用密钥。
redirecturi(string =
${window.location.origin}/
)
位置,以将用户重定向到登录批准后的位置。
manifesturi(string =
${window.location.origin}/manifest.json
)
此应用程序的清单文件的位置。
scopes (array = default_scope)
应用程序请求的权限。
appdomain(string = window.location.origin)
这个应用程序的起源。
expiresat(number = nexthour().gettime())
此请求不再有效的时间。
extraparams(object = {})
要传递给验证器的任何额外参数。使用它来传递不属于blockstack身份验证规范的选项,但可能受到特殊身份验证器的支持。
为了确保您的DApps标识创建流程包含Gaia URL,请修改makeAuthRequest()方法,以便在执行方法时应用值为true的solicitGaiaHubUrl参数:
import {
makeAuthRequest,
redirectToSignInWithAuthRequest
} from ‘blockstack’;
const authRequest = makeAuthRequest(
generateAndStoreTransitKey(),
'http://localhost:8080/‘,
'http://localhost:8080/manifest.json’,
['store_write', 'publish_data’],
'http://localhost:8080/‘,
nextHour().getTime(), {
solicitGaiaHubUrl: true
} // new options param
);
redirectToSignInWithAuthRequest(authRequest);
您还可以传递一个建议的Gaia存储中心URL。例如,如果您有一个企业客户,其员工都希望将您的应用程序与公司运行的Gaia hub一起使用,那么您可以这样做。为此,除了solicitGaiaHubUrl之外,还提供了一个额外的推荐值dgaiahuburl
相关信息
Hello, Hub Choice教程,了解如何使用makeAuthRequest()方法的教程。