Sagar Kothari avatar

πŸ§‘β€πŸ’» Hive dApps & dPackages development - hive-authentication package πŸ“¦ usage guide πŸ“

sagarkothari88

Published: 08 Sept 2025 β€Ί Updated: hive dapps - πŸ§‘β€πŸ’» Hive dApps & dPackages development - hive-authentication package πŸ“¦ usage guide πŸ“

πŸ§‘β€πŸ’» Hive dApps & dPackages development - hive-authentication package πŸ“¦ usage guide πŸ“

🐝 What’s the Buzz About?

Hello Hive community members! πŸŽ‰

  • You may have seen me mention the hive-authentication package in earlier posts, but never with this much jazz.
  • That’s because it was, well, marinating like a fine curry. πŸ›
  • But nowβ€”it’s piping hot and ready for YOU to spice up your projects!
  • No more waiting! Time to fire it up in your ReactJS apps. πŸš€

react-js-projects-only

⚠️ Quick Note:
This is strictly for ReactJS projects! No plain vanilla, no Angular, no Vueβ€”just pure ReactJS flavor.


πŸ”Ž Where To Find It?

npmjs


πŸ€” Why Use hive-authentication?

but why though?

  • Need to verify proof-challenge signed by a hive user from your backend? βœ…
  • Want to let users login with a private posting key (as the last resort)? βœ…
  • Fancy custom local storage per user? βœ…
  • Don’t need any of this? No worriesβ€”stick to @aioha and party on! 🎈

Now you know the β€œwhy”—let’s jump in!

alright let's do it


πŸ› οΈ How to Implement in ReactJS

Step 1: Install

npm install hive-authentication

Step 2: Initialize in App.tsx

Open up App.tsx and set up your authentication flow! πŸ”₯

import { initAioha } from '@aioha/aioha'
import { AiohaProvider } from '@aioha/react-provider'

const aioha = initAioha(
  {
    hivesigner: {
      app: 'hive-auth-demo.app',
      callbackURL: window.location.origin + '/hivesigner.html',
      scope: ['login', 'vote']
    },
    hiveauth: {
      name: 'Hive Authentication Demo',
      description: 'A demo app for testing Hive authentication'
    }
  }
)

function App() {
    return (
        <AiohaProvider aioha={aioha}>
            <div>Your App goes here</div>
        </AiohaProvider>
    );
}   

Step 3: Add the Magic AuthButton

import { AuthButton, useAuthStore } from 'hive-authentication';
import 'hive-authentication/build.css';
import { useAioha } from "@aioha/react-provider";

function YourComponent() {
    const { currentUser, loggedInUsers } = useAuthStore();
    const { aioha } = useAioha();

    useEffect(() => {
        const unsubscribe = useAuthStore.subscribe((state) => {
            console.log('Store state changed:', state);
        });
        return unsubscribe;
    }, []);

    return (
        <div>
          <h1>My App</h1>
          <AuthButton 
            onAuthenticate={handleAuthenticate}
            aioha={aioha}
            shouldShowSwitchUser = {true} // Optional true
            onClose={() => {
              console.log("AuthButton dialog closed");
            }}
          />
          
          {currentUser && (
            <p>Welcome, {currentUser.username}!</p>
          )}
        </div>
    );
}

Step 4: Call Your Backend Like a Pro

const handleAuthenticate = async (hiveResult: HiveAuthResult): Promise<string> => {
    console.log('Hive authentication result:', hiveResult);

    try {
      const response = await fetch("https://beta-api.distriator.com/login", {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          challenge: hiveResult.challenge,
          username: hiveResult.username,
          pubkey: hiveResult.publicKey,
          proof: hiveResult.proof,
        }),
      });

      if (!response.ok) {
        throw new Error(`Server authentication failed: ${response.status} ${response.statusText}`);
      }

      const data = await response.json();
      console.log('Server response:', data);

      // Return your server response as JSON string
      return JSON.stringify(data);
    } catch (error) {
      console.error("Authentication error:", error);
      throw error;
    }
  };

Wait for the useEffect state change messageβ€”voila, it works!

that's it gif


πŸŽ‰ Done & Dusted

Yep, that’s pretty much it. Easy as pie. πŸ₯§
Give it a spin and let me know how it powers up your Hive projects!


🦾 More Power to Hive (and You!)

  • More power to Hive community members!
  • More power to open-source contributors!
  • More power to Hive blockchain!
  • Hive to the moon and beyond πŸš€πŸŒ•

πŸ™Œ Support & Love

  • Tried this package? Drop your feedback in the comments! πŸ’¬
  • Liked my work? Upvote this post! πŸ‘
  • Want to keep seeing new stuff? Vote me as Hive Witness 😎
  • Love me? Tip me on this post!
  • See you in the next updateβ€”BYE BYE! πŸ‘‹

πŸ“ Final Note


πŸš€ My Contributions to ♦️ Hive Ecosystem

ContributionToHiveEcosystem
Hive Witness NodeHive API Node3Speak Video Encoder Node Operator (highest number of nodes)3Speak Mobile App Developer
Podcast App Developer3Shorts App Developer3Speak Support & Maintenance TeamDistriator Developer
CheckinWithXYZHive InboxHiFindHive Donate App
Contributed to HiveAuth Mobile AppEcency ↔ 3Speak IntegrationEcency ↔ InLeo IntegrationEcency ↔ Actifit Integration
Hive Stats AppVote for Witness AppHiveFlutterKitNew 3Speak App

πŸ™Œ Support Back

❀️ Appreciate my work? Consider supporting threespeak@threespeak & sagarkothari88@sagarkothari88! ❀️

VoteForWitness
sagarkothari88sagarkothari88@sagarkothari88
threespeakthreespeak@threespeak

hive dapps Next Steps

Leave πŸ§‘β€πŸ’» Hive dApps & dPackages development - hive-authentication package πŸ“¦ usage guide πŸ“ to:

Written by

App Developer on Hive - Distriator, Check in With XYZ, 3Speak, HiveSuite.app.

Read more #hive posts


Best Posts From Sagar Kothari

More Posts From Sagar Kothari