Closed mtergel closed 1 year ago
Im also getting this on the confirmSignIn after a successful challenge response - working fine in v5 and no change to CUSTOM_CHALLENGE
signIn returns the expected Output
confirmSignInOutput {"isSignedIn": false, "nextStep": {"additionalInfo": {"attempts": "1", "attemptsLeft": "2", "maxAttempts": "3", "phone_number": "+61********"}, "signInStep": "CONFIRM_SIGN_IN_WITH_CUSTOM_CHALLENGE"}}
But passing correct challenge will throw Unkown Error
Hi guys I'm also getting this error, I've installed a fresh expo49 app and only the aws amplify to test it, and I got this error signing in [Unknown: An unknown error has ocurred.]
Also today I've tried the new versions: "@aws-amplify/react-native": "^1.0.4" "aws-amplify": "^6.0.4", "react-native-get-random-values": "1.10.0"
Still the same problem. Thx
Hello @mtergel , @joaobsantos . Sorry to hear you are having issues with the signIn
API. Just to make sure, what are the actual steps to trigger this error ? . Can you also console log the underlyingError
from the AuthError
. e.g error.underlyingError
?
hello @steve-calverley . Sorry about the issues with the confirmSignIn
API. Seems you are getting this error when calling it with the right challenge. Can you also console log the underlyingError
from the AuthError
?
Can you also console log the
underlyingException
from theAuthError
Hi @israx , heres the log : signing in undefined
Maybe its not iniatializing Amplify.configure?!
@joaobsantos can you screenshot the error please ?
Something I forgot @joaobsantos , just for testing purposes only. Can you call the signIn
API as follows.
await signIn({
username: 'your_username',
password: 'your_password',
options: {
authFlowType: 'USER_PASSWORD_AUTH',
},
});
This will change the actual auth flow type. However we recommend using the default flow which is SRP. Let me know if that ends up working please.
@israx here it is:
Sorry my mistake. It should be error.underlyingError
, apologies.
Error signing in: [Error: The package '@aws-amplify/react-native' doesn't seem to be linked. Make sure:
I have "@aws-amplify/react-native": "^1.0.4", installed...
can you delete node_modules
and package.lock.json
?. Then try to install everything and rebuild the app as suggested above.
I've already done that, but im using expo with expo go and I follow your docs... I dont have to build a development app... I mean in verwsion 4 everything worked great... Only in 5 and 6 I get this problem. I dont know.
Hi @mtergel can you confirm that you have installed react-native-get-random-values
in your project?
Hi @nadetastic , I can confirm that I have in mine:
"dependencies": { "@aws-amplify/react-native": "^1.0.4", "@aws-amplify/rtn-web-browser": "^1.0.4", "@expo/vector-icons": "^13.0.0", "@react-native-async-storage/async-storage": "1.18.2", "@react-native-community/netinfo": "9.3.10", "@react-navigation/native": "^6.0.2", "aws-amplify": "^6.0.4", "expo": "~49.0.20", "expo-font": "~11.4.0", "expo-linking": "~5.0.2", "expo-router": "^2.0.0", "expo-splash-screen": "~0.20.5", "expo-status-bar": "~1.6.0", "expo-system-ui": "~2.4.0", "expo-web-browser": "~12.3.2", "react": "18.2.0", "react-dom": "18.2.0", "react-native": "0.72.6", "react-native-gesture-handler": "~2.12.0", "react-native-get-random-values": "~1.9.0", "react-native-safe-area-context": "4.6.3", "react-native-screens": "~3.22.0", "react-native-web": "~0.19.6" },
hello @steve-calverley . Sorry about the issues with the
confirmSignIn
API. Seems you are getting this error when calling it with the right challenge. Can you also console log theunderlyingError
from theAuthError
?
@israx Console Log - [TypeError: Cannot read property 'setTokens' of undefined]
Upgrade to 6.0.4 and removed lock etc "react-native-get-random-values": "^1.9.0", installed
@steve-calverley what are your dependencies ? Wondering if @react-native-async-storage/async-storage
is installed?
@israx Deps
"dependencies": { "@aws-amplify/react-native": "^1.0.3", "@aws-amplify/rtn-push-notification": "^1.2.0", "@faker-js/faker": "^8.0.2", "@gorhom/bottom-sheet": "^4.4.7", "@hookform/resolvers": "^3.1.1", "@react-native-async-storage/async-storage": "^1.19.5", "@react-native-community/blur": "^4.3.2", "@react-native-community/checkbox": "^0.5.16", "@react-native-community/netinfo": "^11.1.0", "@react-native-picker/picker": "^2.4.10", "@react-native-segmented-control/segmented-control": "^2.4.2", "@react-navigation/bottom-tabs": "^6.5.7", "@react-navigation/drawer": "^6.6.3", "@react-navigation/native": "^6.1.6", "@react-navigation/native-stack": "^6.9.12", "@shopify/flash-list": "^1.6.1", "add": "^2.0.6", "appcenter": "^4.4.5", "appcenter-analytics": "^4.4.5", "appcenter-crashes": "^4.4.5", "aws-amplify": "^6.0.4", "babel-preset-env": "^1.7.0", "babel-preset-react-native": "^4.0.1", "core-js": "^3.31.0", "emoji-regex": "^10.2.1", "emoji-utils": "^1.0.1", "exponential-backoff": "^3.1.1", "i18next": "^23.2.3", "immer": "9.0.6", "intl-pluralrules": "^2.0.1", "libphonenumber-js": "^1.10.44", "lodash": "^4.17.21", "lottie-react-native": "^5.1.6", "luxon": "^3.4.3", "mitt": "^3.0.1", "moment": "^2.29.4", "moment-timezone": "^0.5.43", "nativewind": "^2.0.11", "patch-package": "^7.0.0", "postinstall-postinstall": "^2.1.0", "react": "18.2.0", "react-hook-form": "^7.45.0", "react-i18next": "^13.0.1", "react-native": "0.72.4", "react-native-avoid-softinput": "^4.0.0", "react-native-base64": "^0.2.1", "react-native-bootsplash": "^5.0.2", "react-native-camera": "^4.2.1", "react-native-compressor": "^1.6.1", "react-native-config": "^1.5.1", "react-native-confirmation-code-field": "^7.3.1", "react-native-contacts": "^7.0.7", "react-native-date-picker": "^4.2.13", "react-native-device-info": "^10.8.0", "react-native-fast-image": "^8.6.3", "react-native-flipper": "^0.212.0", "react-native-gesture-handler": "^2.12.0", "react-native-get-random-values": "^1.9.0", "react-native-gifted-chat": "^2.4.0", "react-native-haptic-feedback": "^2.2.0", "react-native-image-picker": "^5.6.0", "react-native-inappbrowser-reborn": "^3.7.0", "react-native-keyboard-controller": "^1.5.6", "react-native-linear-gradient": "^2.6.2", "react-native-localize": "^3.0.2", "react-native-markdown-display": "^7.0.0-alpha.2", "react-native-mask-input": "^1.2.3", "react-native-mmkv": "^2.9.0", "react-native-pager-view": "^5.4.9", "react-native-reanimated": "3.3.0", "react-native-reanimated-carousel": "^3.4.0", "react-native-safe-area-context": "^4.5.3", "react-native-screens": "^3.21.0", "react-native-section-list-get-item-layout": "^2.2.3", "react-native-snap-carousel": "^3.9.1", "react-native-sqlite-storage": "^6.0.1", "react-native-svg": "^13.9.0", "react-native-tracking-transparency": "^0.1.2", "react-native-url-polyfill": "^2.0.0", "react-native-webview": "^13.2.2", "react-phone-number-input": "^3.2.25", "rive-react-native": "^4.1.2", "uuid": "^9.0.0", "yarn": "^1.22.19", "yup": "^1.2.0", "yup-phone-lite": "^2.0.1", "zustand": "^4.4.4" },
@steve-calverley
Can you shared a redacted example of how you are importing, configuring and calling the APIs?
@joaobsantos
On the code that you shared I think the signIn
invocation should have the options: { authFlowType: '...' }
not handleSignIn
. Also can you share how you are importing and configuring (redacted) the library?
@mtergel can you share your app package.json
?
@steve-calverley
Can you shared a redacted example of how you are importing, configuring and calling the APIs?
@elorzafe two functions we use - very rough for testing this issue
const signIn = async (username: string) => {
try {
const signInResult = await AWSSignIn({
username,
options: {
authFlowType: 'CUSTOM_WITHOUT_SRP',
},
});
console.log('signInResult', signInResult);
const {isSignedIn, nextStep} = signInResult;
if (isSignedIn) {
return initSignIn();
}
switch (nextStep.signInStep) {
case 'CONFIRM_SIGN_IN_WITH_CUSTOM_CHALLENGE':
break;
case 'CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED':
// return signInResult;
break;
case 'RESET_PASSWORD':
break;
default:
console.log(nextStep.signInStep);
throw new Error('Not a Sign In Event we handle');
}
} catch (error: unknown) {
console.log('ERROR::useCognitoUser::signIn:: ', error);
throw error;
}
};
const sendCustomChallengeAnswer = async (
answer: string,
): Promise<AuthUser | any> => {
let user;
try {
console.log('answer', answer);
const confirmSignInOutput = await AWSConfirmSignIn({
challengeResponse: answer,
});
console.log('confirmSignInOutput', confirmSignInOutput);
if (!confirmSignInOutput.isSignedIn) {
throw new Error('Incorrect Answer. Please try again');
}
user = await getCurrentUser();
console.log('user', user);
return user;
} catch (error: unknown) {
if (!user) {
console.log(
'ERROR::useCognitoUser::sendCustomChallengeAnswer:: ',
error,
);
throw new Error('Unable to sign in');
}
}
};
First function is called on screen that obtains phone number -> move to send screen to enter answer -> 2nd function is called.
Config
import amplifyconfig from './src/amplifyconfiguration.json';
Amplify.configure(amplifyconfig);
Thanks guys, we were using nx monorepo, it seemed we need to import react-native-get-random-values to the package.json for our app.
"aws-amplify": "*",
"@react-native-async-storage/async-storage": "*",
"@aws-amplify/react-native": "*",
"react-native-get-random-values": "*"
@elorzafe Should I open a new ticket for my issue. Have just upgrade packages "aws-amplify": "", "@react-native-async-storage/async-storage": "", "@aws-amplify/react-native": "", "react-native-get-random-values": "" and still the same error ERROR::useCognitoUser::sendCustomChallengeAnswer:: [TypeError: Cannot read property 'setTokens' of undefined]
@joaobsantos
On the code that you shared I think the
signIn
invocation should have theoptions: { authFlowType: '...' }
nothandleSignIn
. Also can you share how you are importing and configuring (redacted) the library?
@elorzafe sorry, you are right, and now it works... Maybe improve the docs to have the authFlowType: "USER_PASSWORD_AUTH" https://docs.amplify.aws/react-native/build-a-backend/auth/enable-sign-up/#sign-in
Thx for your time to help me I really apreciate and keep up the good work.
async function handleSignIn({ username, password }: SignInInput) {
try {
const user = await signIn({
username,
password,
options: {
authFlowType: "USER_PASSWORD_AUTH",
},
});
console.log("user", user);
} catch (error) {
//@ts-ignore
console.log("Error signing in:", error.underlyingError);
}
}
Hi @elorzafe sorry to bother you again, in my clean expo49 it works but then when I do the same thing in my monorepo I get this error right on openning the app (app doesnt work):
ERROR Error: The package '@aws-amplify/react-native' doesn't seem to be linked. Make sure:
AppRegistry.registerComponent
wasn't called., js engine: hermesI have "@aws-amplify/react-native": "^1.0.4", installed.
If I go to the version that I had before, "aws-amplify": "4.3.43" it works fine...
@steve-calverley please do open a new issue so we can keep track of the confirmSignIn
issue.
@joaobsantos Amplify JS currently doesn't support Expo Go as we are now requiring the use of more native modules to leverage native functionality. Is it possible for you to use the RN CLI instead ? And if you don't mind, can you open an issue with us ? So we can keep track of this issue too.
@israx but in a clean expo49 project with expo go, works. I only get that error when I try in a monorepo...
@steve-calverley
feel free to open a new issue but I am still not sure why setTokens
is failing, I wonder if there is something related to async storage configuration. Are you running the App on iOS, or Android?
@joaobsantos happy to help!
We have that setting explained on Switch Authentication Flows docs
Let me know if that clarifies your concerns!
@steve-calverley
feel free to open a new issue but I am still not sure why
setTokens
is failing, I wonder if there is something related to async storage configuration. Are you running the App on iOS, or Android?
@elorzafe Running on both iOS and Android emulators. Let me look into Async Config before opening new issue
Hi @elorzafe , After you pointed me out I went to that link and understood what was happening.
In my opinion the documentation example in signIn should have a reference to that and this code in the example:
options: {
authFlowType: "USER_PASSWORD_AUTH",
},
I'm having the same problem after testing some tips proposed here.
"An unknown error has occurred" at the time of login, with account creation and email verification carried out successfully.
import { StatusBar } from 'expo-status-bar';
import RootNavigator from './src/navigation';
import { NavigationContainer } from '@react-navigation/native';
import { Amplify } from 'aws-amplify';
import { withAuthenticator } from '@aws-amplify/ui-react-native';
import awsExports from './src/aws-exports';
Amplify.configure(awsExports);
function App() {
return (
<NavigationContainer>
<RootNavigator />
<StatusBar style="light" />
</NavigationContainer>
);
};
export default withAuthenticator(App);
I tried using expo go on my iPhone, I used expo go on an android emulator, and none of them work
Were you able to figure this out? I have the same issue.
I still use v5.2.2, it was faster then dealing with this...
I am having the same "an unknown error occurred" on my expo react native app. Does anyone have any suggestions?
Yes, same here I also get this error. @bertoninicolas, I guess even you're developing a food delivery app by following the 5 hours playlist on YT?
Docs say you cannot use Expo Go
Unfortunately you have to:
npx expo run:ios
instead of npx expo start
In my opinion Expo Go should be supported, there is no reason why native code is necessary, at least the error message should be easier to understand
Before opening, please confirm:
JavaScript Framework
React Native
Amplify APIs
Authentication
Amplify Categories
auth
Environment information
Describe the bug
getting error [Unknown: An unknown error has ocurred.] only when calling signIn
Expected behavior
signIn to work
Reproduction steps
call signIn
Code Snippet
Log output
aws-exports.js
No response
Manual configuration
No response
Additional configuration
No response
Mobile Device
No response
Mobile Operating System
No response
Mobile Browser
No response
Mobile Browser Version
No response
Additional information and screenshots
No response