The Kinde Expo SDK allows developers to quickly and securely integrate a new or an existing Expo application into the Kinde platform.
You can also use the Expo starter kit to get started.
npx nypm add @kinde/expoThe redirection URL is automatically computed using Expo Auth Session makeRedirectUri function. You can find more information about this function here.
Setup the Kinde Provider in your App.js file.
import { KindeAuthProvider } from '@kinde/expo';
export default function App() {
return (
<KindeAuthProvider config={{
domain: "https://your-app.kinde.com", // Required
clientId: "your-client-id", // Required
// Optional (default: "openid profile email offline")
scopes: "openid profile email offline",
}}>
<!-- Your application code -->
</KindeAuthProvider>
);
}Simple and flexible functions for register, login and logout are part of the useKindeAuth hook
import { useKindeAuth } from "@kinde/expo";
import { Pressable, View, Text } from "react-native";
export default function Authentication() {
const kinde = useKindeAuth();
const handleSignUp = async () => {
const token = await kinde.register({});
if (token) {
// User was authenticated
}
};
const handleSignIn = async () => {
const token = await kinde.login({});
if (token) {
// User was authenticated
}
};
const handleLogout = async () => {
await kinde.logout({ revokeToken: true });
};
return !kinde.isAuthenticated ? (
<View>
<Pressable onPress={handleSignIn}>
<Text>Sign In</Text>
</Pressable>
<Pressable onPress={handleSignUp}>
<Text>Sign Up</Text>
</Pressable>
</View>
) : (
<Pressable onPress={handleLogout}>
<Text>Logout</Text>
</Pressable>
);
}All utility functions from @kinde/js-utils are available through @kinde/expo/utils and also through the useKindeAuth hook. This allows you to use these utilities directly in your Expo application.
import { getUserProfile, getFlag, getRoles } from "@kinde/expo/utils";
// Example usage
const checkUserProfile = async () => {
const profile = await getUserProfile();
console.log("User profile:", profile);
};Common utility functions include:
getUserProfile- Get the current user's profilegetFlag- Check feature flag valuesgetRoles- Get the current user's rolesgetCurrentOrganization- Get the current organizationgetUserOrganizations- Get all organizations the user belongs togetPermission- get a single permission valuegetPermissions- get all user permissionsgetClaim- Get a specific claim from the tokengetClaims- Get all claims from the tokenrefreshToken- Manually refresh the access token
If you'd like to contribute to this project, please follow these steps:
- Fork the repository.
- Create a new branch.
- Make your changes.
- Submit a pull request.
By contributing to Kinde, you agree that your contributions will be licensed under its MIT License.