Reactコンポーネント
React コンポーネント SDK
The Login with DIMO React Component SDK provides developers with a set of pre-built, customizable building blocks for applications that integrate with DIMO. These components simplify the process of integrating our Accounts API and Transactions SDK in React applications.
SDKの使用
初期化
import {
initializeDimoSDK,
useDimoAuthState
} from "@dimo-network/login-with-dimo";
// Initialize the State Variables
const {
isAuthenticated,
getValidJWT,
email,
walletAddress,
getEmail
} = useDimoAuthState();
// Initialize the SDK
initializeDimoSDK({
clientId: "<dev_license_clientId>",
redirectUri: "<dev_license_redirectUri>",
// OPTIONAL
// apiKey: "<dev_license_apiKey>",
// environment: "<environment>",
// options: {
// forceEmail: true, //BY DEFAULT, this is False - users won't have to share email
// }
});
apiKey
String
Optional API key of your Developer License. This is currently not in use and reserved for future applications.
environment
String
Environment where your app is registered to. Defaults to production
if not indicated. Supports development
or production
at the moment.
options
Object
Additional options for the Login with DIMO Component. Currently supports forceEmail:true,
which requires users to opt into email sharing when logging in. If excluded, defaults to optional email sharing on login.
コンポーネントを構成する
表面化させるコンポーネントに応じて、次の入力から選択します。
Inputs for LoginWithDimo
& ShareVehiclesWithDimo
LoginWithDimo
& ShareVehiclesWithDimo
mode
*
String
One of the two available modes: popup
or redirect
.
onSuccess
*
Callback
Callback function called when the authData
is returned for popup
mode.
Example for authData
:
{ token: <access_token> }
For redirect
mode, the access_token
is in the redirect URI.
Example for redirect: https://your-site.com/redirect?token=<access_token>&email=<user_email>
onError
*
Callback
Callback function called when error occurs.
permissions
String
Optional binary string in replacement of permissionTemplateId
.
Each digit represents whether a specific privilege is granted (1) or not granted (0).
The position of the digit corresponds to the privilege number (from left to right).
Example mapping:
"001"
→ Grants 3 only"1011"
→ Grants 1, 3, and 4"1111"
→ Grants 1, 2, 3, and 4"11111111"
→ Grants 1 through 8
Notes:
The leftmost digit corresponds to privilege 1.
You can pad the string to match the total number of privileges supported.
For ShareVehiclesWithDimo
component, either permissions
or permissionTemplateId
is required as sharing requires permission templates.
permissionTemplateId
String
Optional template ID of the SACD permissions template on IPFS.
For ShareVehiclesWithDimo
component, either permissions
or permissionTemplateId
is required as sharing requires permission templates.
utm
String
Optional parameter for configuring UTMs. Useful for campaign tracking.
Example:
<LoginWithDimo utm="utm_campaign=dimo" />
will redirect to: https://redirecturi.com/?utm_campaign=dimo
vehicles
[String]
Optional array of vehicle tokenId
's to target for the logged in user. If vehicles
is not provided, the flow will pull all available vehicles.
This also filters out any vehicle tokenId
that doesn't belong to the signed-in user.
vehicleMakes
[String]
Optional array of vehicle makes to filter for compatibility with your app. If vehicleMakes
is not provided, all available vehicles will be marked as compatible.
Example: [ 'Tesla', 'Audi', 'Lexus' ]
powertrainTypes
[String]
Optional array of powertrain types to filter for compatibility with your app. If powertrainTypes is not provided, all vehicle types will be marked as compatible.
Example: ['BEV', 'HEV', 'PHEV', 'ICE', 'FCEV']
expirationDate
[String]
Optional parameter to explicitly specify an expiration date for permissions in the ISO8601 format (YYYY-MM-DD).
authenticatedLabel
[String]
Optional parameter to override default button label text for authenticated users.
unAuthenticatedLabel
[String]
Optional parameter to override default button label text for unauthenticated users.
For more information on these inputs, see: Core Functionalities
Inputs for ExecuteAdvancedTransactionWithDimo
ExecuteAdvancedTransactionWithDimo
mode
*
String
One of the two available modes: popup
or redirect
.
onSuccess
*
Callback
Callback function called when data
is returned for popup
mode.
Example: data: { token: <access_token>; transactionHash: <tx_hash>; transactionReceipt: <tx_receipt>; }
onError
*
Callback
Callback function called when error occurs.
address
*
String
The 0x address of the smart contract being executed.
abi
*
Any
An array of JSON representing the ABI of the advanced functions of interest.
functionName
*
String
The name of the function being called.
args
*
[String]
The arguments being passed into the function call.
value
String
Optional number in wei of the native currency sent as a part of the transaction.
次のステップ:
ここまで進めば、DIMOを使用したログインの設定は完了です。ユーザーがアクセスを共有した後で車両データにアクセスするには、バックエンドで データSDK を使用して実装することをお勧めします。ユーザーがLoginコンポーネント経由で認証すると、IDが返されます。つまり、 Identity APIにクエリを実行して、共有された車両のトークンIDを取得するwalletAddress
準備が整ったことになります。
追加リソース:
状態変数
DimoAuthProvider
から認証状態の値を取得するだけでなく、使用者のメール、グローバル アカウントのパブリック アドレス、および 使用者JWT。
この値を必要とするコンポーネントはDimoAuthProvider
、次のように で囲む必要があります。
<DimoAuthProvider>
<SomeComponentThatNeedsDimoState/>
<DimoAuthProvider/>
コンポーネントタイプ:
LoginWithDimo
提供される場合permissionTemplateId
:
「車両が接続されていません」と表示され、続行ボタンが表示される
「すべての車両が共有されました」と表示され、「続行」ボタンが表示されます
権限共有の対象となるすべての車両のリストを表示
権限が提供されていない場合permissionTemplateId
。権限が要求されないため、開発者はこれをShareVehiclesWithDimo
ログイン後のコンポーネントと組み合わせることができます。
権限の共有をスキップ
権限の共有をスキップ
権限の共有をスキップ
ShareVehiclesWithDimo
これは、開発者がログイン後に使用できる分離されたコンポーネントであり、使用者がログインしていない場合はログインをトリガーします。
「車両が接続されていません」と表示され、続行ボタンが表示される
「すべての車両が共有されました」と表示され、「続行」ボタンが表示されます
権限共有の対象となるすべての車両のリストを表示
LogoutWithDimo
これは開発者がログイン後に 「ログアウト」 ボタンを表示するために使用できるオプションの分離コンポーネントです。これにより、現在のDIMO使用者はアカウントからログアウトされ、アプリケーション内で特権車両コンテンツを提供するには、再度ログイン/再認証が必要になります。
ExecuteAdvancedTransactionsWithDimo
これは、開発者がログイン後に使用できる分離コンポーネントであり、使用者がログインしていない場合はログインをトリガーします。
統合モード
popup
このpopup
モードでは、DIMO によるログイン インターフェースを含むブラウザー ポップアップ (新しいウィンドウ) を開く React ボタン コンポーネントが表示されます。
redirect
このredirectモードでは、ユーザーを DIMO によるログイン インターフェースにリダイレクトする React ボタン コンポーネントが表示されます。
使用例
<LoginWithDimo
mode="popup"
onSuccess={(authData) => console.log("Success:", authData)}
onError={(error) => console.error("Error:", error)}
// This will control if your users are asked to share vehicles, as part of the login flow. "1" is the template for all SACD permissions
permissionTemplateId={permissionsEnabled ? "1" : undefined}
// Optionally, specify vehicles (uncomment the line below to use it)
// vehicles={["585","586"]} // Specify the vehicles to be accessed after login
utm="utm_campaign=dimo" // OPTIONAL
/>
<ShareVehiclesWithDimo
mode="popup"
onSuccess={(authData) => console.log("Success:", authData)}
onError={(error) => console.error("Error:", error)}
//REQUIRED: "1" is the template for all SACD permissions
permissionTemplateId={"1"}
// OPTIONAL, specify vehicles (uncomment the line below to use it)
// vehicles={["585","586"]} // Specify the vehicles to be accessed when triggered
expirationDate="2062-12-12T18:51:00Z" // ISO 8601 format
// OPTIONAL, defaults to 100 year if not specified
utm="utm_campaign=dimo" // OPTIONAL
/>
<ExecuteAdvancedTransactionWithDimo
mode="popup"
onSuccess={(data: any) => console.log("Success:", data)}
onError={(error: any) => console.error("Error:", error)}
address="0x21cFE003997fB7c2B3cfe5cf71e7833B7B2eCe10"
value="0"
abi={sampleAbi} //Some sample ABI required
functionName="transfer"
args={["0x62b98e019e0d3e4A1Ad8C786202e09017Bd995e1", "0"]}
/>
Last updated
Was this helpful?