mirror of https://github.com/lukechilds/docs.git
committed by
Hank Stoever
5 changed files with 83 additions and 118 deletions
@ -1,112 +0,0 @@ |
|||||
--- |
|
||||
description: "Storing user data with Blockstack" |
|
||||
--- |
|
||||
# Hubs and user choice |
|
||||
|
|
||||
{% include note.html content="The functionality described in this tutorial has been deprecated with the Blockstack Browser. It will continue working only for apps that have not yet upgraded to Blockstack Connect." %} |
|
||||
|
|
||||
Blockstack operates a default Gaia storage hub at `https://hub.blockstack.org`. |
|
||||
Individuals or organizations may also run their own hubs, either as a for-profit |
|
||||
service or for other reasons. |
|
||||
|
|
||||
## Background |
|
||||
|
|
||||
Each user with an identity in the Blockstack Network has a Gaia hub |
|
||||
configured on their profile. New users that create identities with the |
|
||||
Blockstack Browser automatically are given storage on this default hub. For a |
|
||||
user to have a storage hub other than this default, the user must create an |
|
||||
identity through an application that enables storage hub selection. |
|
||||
|
|
||||
{% include note.html content="Users with existing identities cannot yet migrate |
|
||||
their data from one hub to another." %} |
|
||||
|
|
||||
## Enable the Gaia hub URL option for new users |
|
||||
|
|
||||
A major principle of Blockstack applications is that DApps do not store or |
|
||||
replicated user data. Through the Gaia feature, Blockstack seeks to empower |
|
||||
users to choose where to store their data and how they manage it. |
|
||||
|
|
||||
As a step towards fulfilling this principle, DApp developers can configure their |
|
||||
application to prompt new users to provide a Gaia hub URL. An application with |
|
||||
this feature enabled presents users creating an identity for the first time |
|
||||
with this prompt: |
|
||||
|
|
||||
 |
|
||||
|
|
||||
Users can choose to **Use Blockstack's official provider** or **Use a different provider**. Choosing the non-default option prompts the user with the following: |
|
||||
|
|
||||
 |
|
||||
|
|
||||
Users can enter the HTTPS address of a hub hosted by an entity other than |
|
||||
Blockstack. Once the user submits the above form, they continue through the |
|
||||
standard identity creation. As they use DApps on the Blockstack Network, all |
|
||||
their data is stored in this storage hub and not the default Blockstack hub. |
|
||||
|
|
||||
## Enabling hub selection in your DApp |
|
||||
|
|
||||
To enable this feature, you must ensure your DApp is using the latest version of the blockstack.js library. Instead of the default flow `redirectToSignIn()` method, you must use the `makeAuthRequest()` method. This method takes the following parameters: |
|
||||
|
|
||||
<dl class="uk-description-list"> |
|
||||
<dt class="uk-text-lowercase"> |
|
||||
<code>transitPrivateKey(String = generateAndStoreTransitKey())</code> |
|
||||
</dt> |
|
||||
<dd>A HEX encoded transit private key.</dd> |
|
||||
<dt class="uk-text-lowercase"> |
|
||||
<code>redirectURI(String = `${window.location.origin}/`)</code> |
|
||||
</dt> |
|
||||
<dd>Location to redirect the user to after sign in approval.</dd> |
|
||||
<dt class="uk-text-lowercase"> |
|
||||
<code>manifestURI(String = `${window.location.origin}/manifest.json`)</code> |
|
||||
</dt> |
|
||||
<dd> |
|
||||
Location of this app's manifest file. |
|
||||
</dd> |
|
||||
<dt class="uk-text-lowercase"> |
|
||||
<code>scopes (Array = DEFAULT_SCOPE)</code> |
|
||||
</dt> |
|
||||
<dd>The permissions this app is requesting.</dd> |
|
||||
<dt class="uk-text-lowercase"> |
|
||||
<code>appDomain(String = window.location.origin)</code> |
|
||||
</dt> |
|
||||
<dd>The origin of this app.</dd> |
|
||||
<dt class="uk-text-lowercase"> |
|
||||
<code>expiresAt(Number = nextHour().getTime())</code> |
|
||||
</dt> |
|
||||
<dd>The time at which this request is no longer valid.</dd> |
|
||||
<dt class="uk-text-lowercase"> |
|
||||
<code>extraParams(Object = {})</code> |
|
||||
</dt> |
|
||||
<dd>Any extra parameters to pass to the authenticator. Use this to pass options that aren't part of the Blockstack authentication specification, but might be supported by special authenticators.</dd> |
|
||||
</dl> |
|
||||
|
|
||||
To ensure your DApps identity creation flow includes the Gaia URL, modify the `makeAuthRequest()` method to apply the `solicitGaiaHubUrl` parameter with value `true` when executing the method: |
|
||||
|
|
||||
```javascript |
|
||||
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); |
|
||||
``` |
|
||||
|
|
||||
You can also pass a suggested Gaia storage hub URL also. For example, you might |
|
||||
do this if you have a corporate client whose employees would all like to use |
|
||||
your application with a company-run Gaia hub. To do this, you provide an |
|
||||
additional `recommendedGaiaHubUrl` value alongside the `solicitGaiaHubUrl` |
|
||||
|
|
||||
|
|
||||
## Related information |
|
||||
{:.no_toc} |
|
||||
|
|
||||
[Hello, Hub Choice Tutorial](hello-hub-choice.html) for a tutorial on using the [`makeAuthRequest()`](https://blockstack.github.io/blockstack.js/#makeauthrequest) method. |
|
Loading…
Reference in new issue