react-native-social-x-auth
Version:
A lightweight React Native library for authenticating with X (formerly Twitter) using OAuth 2.0 with PKCE. Provides a secure and seamless login experience through Android Custom Tabs and iOS Safari ViewController. Built specifically for integrating X auth
28 lines (27 loc) • 951 B
JavaScript
;
import { sha256 } from '@noble/hashes/sha2';
import base64 from 'react-native-base64';
function generateCodeVerifier(length = 43) {
const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';
let verifier = '';
for (let i = 0; i < length; i++) {
verifier += possible.charAt(Math.floor(Math.random() * possible.length));
}
return verifier;
}
function base64UrlEncode(bytes) {
const base64Str = base64.encodeFromByteArray(bytes);
return base64Str.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
}
function generateCodeChallenge(verifier) {
try {
const data = new TextEncoder().encode(verifier);
const hash = sha256(data);
return base64UrlEncode(hash).replace(/=/g, '');
} catch (error) {
console.error('Error in generateCodeChallenge:', error);
throw error;
}
}
export { generateCodeVerifier, generateCodeChallenge };
//# sourceMappingURL=pkceUtils.js.map