Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions reactnative/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@ We provide samples that demonstrate both methods.
- A sample app that demonstrates the functionality of using the Ping SDK for React Native for OIDC (redirect) authentication. Can be used with PingOne Advanced Identity Cloud, PingOne and PingAM.
(https://developer.pingidentity.com/orchsdks/oidc/index.html)

### Integrate with PingOne DaVinci:

- [**React Native DaVinci - `/reactnative-davinci`**](./reactnative-davinci/)

- An example React Native project demonstrating PingOne DaVinci orchestration with the Ping SDK for React Native. The sample renders the DaVinci collector matrix natively (forms, polling, QR code, social login, FIDO2 passkeys, device registration/authentication, Protect signals) and includes the OAuth 2.0 device authorization grant.
(https://developer.pingidentity.com/orchsdks/davinci/index.html)

## License

This software may be modified and distributed under the terms of the MIT license. See the LICENSE file for details.
Expand Down
2 changes: 2 additions & 0 deletions reactnative/reactnative-davinci/.bundle/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
BUNDLE_PATH: "vendor/bundle"
BUNDLE_FORCE_RUBY_PLATFORM: 1
34 changes: 34 additions & 0 deletions reactnative/reactnative-davinci/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Copyright (c) 2026 Ping Identity Corporation. All rights reserved.
#
# This software may be modified and distributed under the terms
# of the MIT license. See the LICENSE file for details.

# Build-time native settings only. All SDK runtime configuration (DaVinci,
# device authorization grant) is selected in the app from
# assets/configs/*.json presets or custom configs created on the
# Configuration screen; .env is not read by the app at runtime.

# TODO: Copy this file to `.env` and fill in the values for the features you use.
# All keys are optional: leave a feature's keys empty and that feature stays
# unconfigured (its screens show an actionable error).

# Facebook App config (external IdP / social login collector)
# Required on both platforms when a DaVinci flow includes a social login
# collector backed by Facebook.
FACEBOOK_APP_ID=your-facebook-app-id
FACEBOOK_LOGIN_PROTOCOL_SCHEME=fbyour-facebook-app-id
FACEBOOK_CLIENT_TOKEN=your-facebook-client-token

# Google client app iOS config (external IdP / social login collector)
# Required on iOS when a DaVinci flow includes a social login collector backed
# by Google. Android needs no app-side Google configuration: the Android SDK
# takes the Google client ID from the DaVinci social login connector in the flow.
GOOGLE_IOS_CLIENT_ID=your-google-ios-client-id.apps.googleusercontent.com
GOOGLE_IOS_REVERSED_CLIENT_ID=com.googleusercontent.apps.your-google-ios-client-id

# Associated domain for passkey (FIDO2) credential delegation
# Required on both platforms when a DaVinci flow includes FIDO2 registration
# or authentication: Android builds it into asset_statements and iOS sets it
# as a webcredentials entitlement. It must match the domain registered with
# the Apple App ID capability (iOS) and the Digital Asset Links file (Android).
ASSOCIATED_DOMAIN=your-associated-domain.example.com
37 changes: 37 additions & 0 deletions reactnative/reactnative-davinci/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
* Copyright (c) 2026 Ping Identity Corporation. All rights reserved.
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/

module.exports = {
root: true,
extends: '@react-native',
parserOptions: {
babelOptions: {
// @babel/eslint-parser resolves the root babel.config.js from
// process.cwd() by default, which breaks linting from the repo root.
cwd: __dirname,
},
},
rules: {
'no-void': ['warn', { allowAsStatement: true }],
},
overrides: [
{
files: ['*.ts', '*.tsx'],
rules: {
'@typescript-eslint/no-unused-vars': [
'error',
{
varsIgnorePattern: '^_',
argsIgnorePattern: '^_',
caughtErrorsIgnorePattern: '^_',
destructuredArrayIgnorePattern: '^_',
},
],
},
},
],
};
77 changes: 77 additions & 0 deletions reactnative/reactnative-davinci/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# OSX
#
.DS_Store

# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
**/.xcode.env.local
ios/Config.local.xcconfig

# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
*.hprof
.cxx/
*.keystore
*.jks
.kotlin/

# node.js
#
node_modules/
npm-debug.log
yarn-error.log
.env

# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/

**/fastlane/report.xml
**/fastlane/Preview.html
**/fastlane/screenshots
**/fastlane/test_output

# Bundle artifact
*.jsbundle

# Ruby / CocoaPods
**/Pods/
/vendor/bundle/

# Temporary files created by Metro to check the health of the file watcher
.metro-health-check*

# testing
/coverage

# Yarn
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
12 changes: 12 additions & 0 deletions reactnative/reactnative-davinci/.prettierrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/*
* Copyright (c) 2026 Ping Identity Corporation. All rights reserved.
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/

module.exports = {
arrowParens: 'avoid',
singleQuote: true,
trailingComma: 'all',
};
1 change: 1 addition & 0 deletions reactnative/reactnative-davinci/.watchmanconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
1 change: 1 addition & 0 deletions reactnative/reactnative-davinci/.yarnrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
nodeLinker: node-modules
Loading
Loading