{"id":31817670,"url":"https://github.com/crossmint/solana-wallets-expo-ncs-google-quickstart","last_synced_at":"2026-07-29T22:31:15.548Z","repository":{"id":298606032,"uuid":"1000528532","full_name":"Crossmint/solana-wallets-expo-ncs-google-quickstart","owner":"Crossmint","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-11T23:56:54.000Z","size":1773,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-11T10:24:42.035Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Crossmint.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-11T23:47:05.000Z","updated_at":"2025-06-11T23:57:02.000Z","dependencies_parsed_at":"2025-06-12T00:37:56.394Z","dependency_job_id":"2cf5614f-d3f7-410d-93d0-b67cc476479e","html_url":"https://github.com/Crossmint/solana-wallets-expo-ncs-google-quickstart","commit_stats":null,"previous_names":["crossmint/solana-wallets-expo-ncs-google-quickstart"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Crossmint/solana-wallets-expo-ncs-google-quickstart","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crossmint%2Fsolana-wallets-expo-ncs-google-quickstart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crossmint%2Fsolana-wallets-expo-ncs-google-quickstart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crossmint%2Fsolana-wallets-expo-ncs-google-quickstart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crossmint%2Fsolana-wallets-expo-ncs-google-quickstart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Crossmint","download_url":"https://codeload.github.com/Crossmint/solana-wallets-expo-ncs-google-quickstart/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crossmint%2Fsolana-wallets-expo-ncs-google-quickstart/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36052204,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-29T02:00:04.910Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-11T10:23:14.750Z","updated_at":"2026-07-29T22:31:15.500Z","avatar_url":"https://github.com/Crossmint.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"200\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/8b617791-cd37-4a5a-8695-a7c9018b7c70\" /\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\u003ch1\u003eSolana Wallets Expo NCS Google Quickstart\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://solana-wallets.demos-crossmint.com/\"\u003eLive Demo\u003c/a\u003e | \u003ca href=\"https://docs.crossmint.com/introduction/platform/wallets\"\u003eDocs\u003c/a\u003e | \u003ca href=\"https://github.com/crossmint\"\u003eSee all quickstarts\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cimg src=\"https://github.com/user-attachments/assets/76a983ab-499e-4d12-af7a-0ae17cb0b6cd\" alt=\"Image\" width=\"full\"\u003e\n\u003c/div\u003e\n\n## Introduction\n\nCreate and interact with Crossmint wallets in Solana using Crossmint Auth to handle user authentication.\n\n**Learn how to:**\n\n- Create a wallet\n- View its balance for SOL and SPL tokens\n- Send a transaction\n- Add delegated signers to allow third parties to sign transactions on behalf of your wallet\n\n## Setup\n\n1. Clone the repository and navigate to the project folder:\n\n```bash\ngit clone https://github.com/crossmint/solana-wallets-expo-quickstart.git \u0026\u0026 cd solana-wallets-expo-quickstart\n```\n\n2. Install all dependencies:\n\n```bash\nnpm install\n# or\nyarn install\n# or\npnpm install\n# or\nbun install\n```\n\n3. Set up the environment variables:\n\n```bash\ncp .env.template .env\n```\n\n4. Set up your Crossmint client API key:\n\n   a. Generate a Crossmint client API key from [here](https://docs.crossmint.com/introduction/platform/api-keys/client-side).\n\n   b. Make sure your API key has the following scopes: `users.create`, `users.read`, `wallets.read`, `wallets.create`, `wallets:transactions.create`, `wallets:transactions.sign`, `wallets:balance.read`, `wallets.fund`.\n\n   c. To authenticate requests from your app, whitelist the app domain by selecting \"Mobile\" under \"App type\" and entering your iOS bundle ID and Android package name from `app.json` (by default this quickstart uses \"com.crossmint.solana.wallets\").\n\n5. Add the API key to the `.env` file.\n\n```bash\nEXPO_PUBLIC_CLIENT_CROSSMINT_API_KEY=your_api_key\n```\n\n## Google Sign In Setup\n\nThis quickstart uses Google Sign In for user authentication. Follow these steps to configure Google Sign In:\n\n### 1. Create a Google Cloud Project\n\n1. Go to the [Google Cloud Console](https://console.cloud.google.com/)\n2. Create a new project or select an existing one\n3. Enable the Google+ API for your project\n\n### 2. Configure OAuth 2.0 Credentials\n\n#### For Web Application (Required for both iOS and Android)\n\n1. In the Google Cloud Console, go to **APIs \u0026 Services** \u003e **Credentials**\n2. Click **Create Credentials** \u003e **OAuth 2.0 Client IDs**\n3. Select **Web application** as the application type\n4. Add your domain to **Authorized JavaScript origins** (for development, you can use `http://localhost`)\n5. Note the **Client ID** - this will be your `EXPO_PUBLIC_GOOGLE_WEB_CLIENT_ID`\n\n#### For iOS Application\n\n1. Create another OAuth 2.0 Client ID\n2. Select **iOS** as the application type\n3. Enter your iOS bundle identifier: `com.crossmint.solana.wallets` (or your custom bundle ID from `app.json`)\n4. Note the **Client ID** - this will be your `EXPO_PUBLIC_GOOGLE_IOS_CLIENT_ID`\n\n#### For Android Application\n\n1. Create another OAuth 2.0 Client ID\n2. Select **Android** as the application type\n3. Enter your Android package name: `com.crossmint.solana.wallets` (or your custom package name from `app.json`)\n4. Generate the SHA-1 certificate fingerprint (see next step)\n\n### 3. Generate SHA-1 Certificate Fingerprint\n\nFor Android configuration, you need to generate a SHA-1 certificate fingerprint:\n\n1. First, build your project to generate the debug keystore:\n\n   ```bash\n   npx expo prebuild --clean\n   npx expo run:android\n   ```\n\n2. Once the build is complete, generate the SHA-1 fingerprint:\n\n   ```bash\n   keytool -keystore ./android/app/debug.keystore -list -v\n   ```\n\n   When prompted for a password, use: `android`\n\n3. Copy the SHA-1 fingerprint from the output and add it to your Android OAuth 2.0 Client ID in the Google Cloud Console\n\n**Note:** For production builds, you'll need to generate the SHA-1 for your production keystore instead.\n\n### 4. Update Environment Variables\n\nAdd the Google Client IDs to your `.env` file:\n\n```bash\nEXPO_PUBLIC_CLIENT_CROSSMINT_API_KEY=your_crossmint_api_key\nEXPO_PUBLIC_GOOGLE_WEB_CLIENT_ID=your_web_client_id\nEXPO_PUBLIC_GOOGLE_IOS_CLIENT_ID=your_ios_client_id\n```\n\n### 5. Configure Crossmint JWT Authentication\n\nTo enable custom JWT authentication with Google tokens in Crossmint:\n\n1. Go to your [Crossmint Console](https://staging.crossmint.com/console/projects/apiKeys)\n2. Navigate to your project's API Keys section\n3. In the JWT Authentication section, select **Custom tokens**\n4. Configure the following settings:\n   - **JWKS Endpoint**: `https://www.googleapis.com/oauth2/v3/certs`\n   - **Issuer (iss field in JWT)**: `https://accounts.google.com`\n5. Save your configuration\n\n### 6. Update app.json (Already Configured)\n\nYou need to update the `app.json` file with the Google Sign In plugin configuration. The configuration follows the [non-Firebase setup guide](https://react-native-google-signin.github.io/docs/setting-up/expo#expo-without-firebase) and includes:\n\n```json\n{\n  \"plugins\": [\n    [\n      \"@react-native-google-signin/google-signin\",\n      {\n        \"iosUrlScheme\": \"com.googleusercontent.apps._some_id_here_\"\n      }\n    ]\n  ]\n}\n```\n\n**Note:** The `iosUrlScheme` should match the reversed client ID from your iOS OAuth 2.0 Client ID.\n\n### 7. Rebuild the App\n\nAfter configuring all the above settings, rebuild your app:\n\n```bash\nnpx expo prebuild --clean\nnpx expo run:android\nnpx expo run:ios\n```\n\n6. Run the development server:\n\n```bash\nnpm run start\n# or\nyarn start\n# or\npnpm start\n# or\nbun start\n```\n\nNote: When running an iOS development build, make sure you're running the latest version on the simulator (\u003eiOS 18).\n\n## Using in production\n\n1. Create a [production API key](https://docs.crossmint.com/introduction/platform/api-keys/client-side).\n\n## Errors when running in iOS simulator\n\nIf you encounter errors trying to run the expo app on iOS, try running:\n\n```bash\nnpx expo install --fix\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrossmint%2Fsolana-wallets-expo-ncs-google-quickstart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrossmint%2Fsolana-wallets-expo-ncs-google-quickstart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrossmint%2Fsolana-wallets-expo-ncs-google-quickstart/lists"}