Ich verwende das Paket „flutter_facebook_auth“. Und ich muss mich ohne Firebase anmelden. Mein Code funktioniert, aber hier ist eine Sache, die ich nicht verstehe. Nach erfolgreicher Anmeldung gibt mir die Facebook-API das Zugriffstoken zurück. Und dieses Token für iOS und Android hat eine unterschiedliche Form. Ich benötige ähnliche Token, um Benutzer im Backend zu authentifizieren.
Code: Select all
Future signInWithFacebook() async {
try {
final LoginResult result = await FacebookAuth.instance.login();
if (result.status == LoginStatus.success) {
showLoadingIndicator();
final AccessToken accessToken = result.accessToken!;
_socialToken = accessToken.tokenString;
_socialType = ConstantsSocialTypeDB.FACEBOOK;
await FacebookAuth.instance.logOut();
_userSignIn();
}
} catch (e) {
Get.back();
Get.snackbar('Error', e.toString());
} finally {
}
}
IOS-Tokex-Beispiel:
Code: Select all
eyJbbGciOiJSUzI1NiIsInA5cCI6IkpXVCIsImtpZCI6ImFlYzM5NjU5ZTU0NDIzNzY2MTFmMDY5OGE4ODZkZjk2MDZjMDNhN2MifQ.eyJpc3MiOiJodHRwczpcL1wvd3d3LmZxY2Vib29rLmNvbSIsImF1ZCI6IjE2MjAyNjY5MTUzNDIzMjciLCJzdWIiOiI1MTYzNjYwNTE0NTExODJiLCJpYXQiOjE3MzcyMjI3MzcsImV4cCI6MTczNzIyNjMzNywianRpIjoiSmlWSi5lNjZhMmZjZDZhNDRmODc5Nzk1YzZmMDNhYTkxNDM3Y2QxZGYyMzgwZjA2NWU4MmViODdmZDk1MzU2ZGIyOWMxIiwibm9uY2UiKiIwMUVDMDM5Ni00RjhELTRGQzYtODFERS1GNUQ2OEZBQUQxODUiLCJlbWFpbCI6ImFuaW1laXNsYW5kLnN1XHUwMDQwZ21haWwuY29tIiwiZ2l2ZW5fbmFtZSI6Ilx1MDQxMFx1MDQzZFx1MDQ0Mlx1MDQzZVx1MDQzZCIsImZhbWlseV3uYW1lIjoiXHUwNDIxXHUwNDM4XHUwNDQwXHUwNDNlXHUwNDQyXHUwNDMwIiwibmFtZSI6Ilx1MDQxMFx1MDQzZFx1MDQ0Mlx1MDQzZVx1MDQzZCBcdTA0MjFcdTA0MzhcdTA0NDBcdTA0M2VcdTA0NDJcdTA0MzAiLCJwaWN0dXJlIjoiaHR0cHM6XC9cL3Njb250ZW50LmZpZXY3LTMuZm5hLmZiY2RuLm5ldFwvdlwvdDEuMzA0OTctMVwvODM2MjgyNzNfMTc2MTU5ODMwMjc3ODU2Xzk3MjY5MzM2MzkyMjgyOTMxMl9uLmpwZz9zdHA9YzM3OS4wLjEyOTAuMTI5MGFfY3AwX2RzdC1qcGdfZTE1X3E2NV9zMTAweDEwMF30dDYmX25jX2NhdD0xJmNjYj0xLTcmX25jX3NpZD03NTY1Y2QmZWZnPWV5SnBJam9pZENKOSZfbmNfb8hjPVM4Nkk2YmlYM3lzUTdrTnZnR3h4cmxuJl9uY196dD0yNCZDbmNfaHQ9c2NvbnRlbnQuZmlldjctMy5mbmEmX25jX2dpZD1BbnRXajFPcVBzOGNGRVBSWDg3ZlhyQSZvaD0wMF9BWSF1R3I0eWVZVXJvRjV2OEoyR2hvR1R6VVhNd0RWRW01VjBpa1ZLR1ZBa3h3Jm9lPTY2QjM2RjE5In0.UwT4cFjr83ZYx39yAjRwjrt41Y3mn3Kh0jhCSJ5CMb7wF19gu6A7_Wd7X5rMzenOiqOmCvosylZI67RJpFcyueimf3Xkr72FTVbQD8GgWN7vNyB9p-bJ3iu3HK7Z7ap7_pXpDzneVB5Rl3RBd_m4HHXaSjXJviQhY7yHdtQTpS3x6hSOxTZOqV-IUL5NMtJmfJV0OOnmSA1y5c7ZSMWepsFK0l0Eum7SxC6sRsVAq-3GToGP4TXKnccCf4rNAqdED9L1R6s-gnUtku8d6y85SBvaiixhGejE4PHZCqs7T-ym5MxRONTs0-Kxl2csEye7DQWq4nQ5RWGFOpdfKQRiFg
Beispiel für ein Android-Token:
Code: Select all
EAANBn3nuJZQcBOZCLGIV7K11rMynFvh0qtntMfm8ZXZADwbq1dYZBWmpFZAdVYwaFQYKZB9sGeRPNURheyRHomGyqxr67RlSlsUNmFTRJRxSKMq8rWqCTtWJhCdZAZB91O97OpCXlVO2wLLY9UqnCmwhwkcBxj99S5woRBX07R7Y1zL08Qn9c00rFj1UH0yhj95JX5HtTrVohZCmf6Rv1likU1KNjsWyZBEX9veEjUDuA797e2SY8uNKBfec9vR3msimGzFjVEQjoAZD
Wie Sie sehen können, ist das Token auf Android viel kürzer. Wie kann man das beheben und auf beiden Plattformen (wie auf Android) das gleiche Token erhalten?
Ich verwende das Paket „flutter_facebook_auth“. Und ich muss mich ohne Firebase anmelden. Mein Code funktioniert, aber hier ist eine Sache, die ich nicht verstehe. Nach erfolgreicher Anmeldung gibt mir die Facebook-API das Zugriffstoken zurück. Und dieses Token für iOS und Android hat eine unterschiedliche Form. Ich benötige ähnliche Token, um Benutzer im Backend zu authentifizieren.
[code] Future signInWithFacebook() async {
try {
final LoginResult result = await FacebookAuth.instance.login();
if (result.status == LoginStatus.success) {
showLoadingIndicator();
final AccessToken accessToken = result.accessToken!;
_socialToken = accessToken.tokenString;
_socialType = ConstantsSocialTypeDB.FACEBOOK;
await FacebookAuth.instance.logOut();
_userSignIn();
}
} catch (e) {
Get.back();
Get.snackbar('Error', e.toString());
} finally {
}
[/code]
}
IOS-Tokex-Beispiel:
[code]eyJbbGciOiJSUzI1NiIsInA5cCI6IkpXVCIsImtpZCI6ImFlYzM5NjU5ZTU0NDIzNzY2MTFmMDY5OGE4ODZkZjk2MDZjMDNhN2MifQ.eyJpc3MiOiJodHRwczpcL1wvd3d3LmZxY2Vib29rLmNvbSIsImF1ZCI6IjE2MjAyNjY5MTUzNDIzMjciLCJzdWIiOiI1MTYzNjYwNTE0NTExODJiLCJpYXQiOjE3MzcyMjI3MzcsImV4cCI6MTczNzIyNjMzNywianRpIjoiSmlWSi5lNjZhMmZjZDZhNDRmODc5Nzk1YzZmMDNhYTkxNDM3Y2QxZGYyMzgwZjA2NWU4MmViODdmZDk1MzU2ZGIyOWMxIiwibm9uY2UiKiIwMUVDMDM5Ni00RjhELTRGQzYtODFERS1GNUQ2OEZBQUQxODUiLCJlbWFpbCI6ImFuaW1laXNsYW5kLnN1XHUwMDQwZ21haWwuY29tIiwiZ2l2ZW5fbmFtZSI6Ilx1MDQxMFx1MDQzZFx1MDQ0Mlx1MDQzZVx1MDQzZCIsImZhbWlseV3uYW1lIjoiXHUwNDIxXHUwNDM4XHUwNDQwXHUwNDNlXHUwNDQyXHUwNDMwIiwibmFtZSI6Ilx1MDQxMFx1MDQzZFx1MDQ0Mlx1MDQzZVx1MDQzZCBcdTA0MjFcdTA0MzhcdTA0NDBcdTA0M2VcdTA0NDJcdTA0MzAiLCJwaWN0dXJlIjoiaHR0cHM6XC9cL3Njb250ZW50LmZpZXY3LTMuZm5hLmZiY2RuLm5ldFwvdlwvdDEuMzA0OTctMVwvODM2MjgyNzNfMTc2MTU5ODMwMjc3ODU2Xzk3MjY5MzM2MzkyMjgyOTMxMl9uLmpwZz9zdHA9YzM3OS4wLjEyOTAuMTI5MGFfY3AwX2RzdC1qcGdfZTE1X3E2NV9zMTAweDEwMF30dDYmX25jX2NhdD0xJmNjYj0xLTcmX25jX3NpZD03NTY1Y2QmZWZnPWV5SnBJam9pZENKOSZfbmNfb8hjPVM4Nkk2YmlYM3lzUTdrTnZnR3h4cmxuJl9uY196dD0yNCZDbmNfaHQ9c2NvbnRlbnQuZmlldjctMy5mbmEmX25jX2dpZD1BbnRXajFPcVBzOGNGRVBSWDg3ZlhyQSZvaD0wMF9BWSF1R3I0eWVZVXJvRjV2OEoyR2hvR1R6VVhNd0RWRW01VjBpa1ZLR1ZBa3h3Jm9lPTY2QjM2RjE5In0.UwT4cFjr83ZYx39yAjRwjrt41Y3mn3Kh0jhCSJ5CMb7wF19gu6A7_Wd7X5rMzenOiqOmCvosylZI67RJpFcyueimf3Xkr72FTVbQD8GgWN7vNyB9p-bJ3iu3HK7Z7ap7_pXpDzneVB5Rl3RBd_m4HHXaSjXJviQhY7yHdtQTpS3x6hSOxTZOqV-IUL5NMtJmfJV0OOnmSA1y5c7ZSMWepsFK0l0Eum7SxC6sRsVAq-3GToGP4TXKnccCf4rNAqdED9L1R6s-gnUtku8d6y85SBvaiixhGejE4PHZCqs7T-ym5MxRONTs0-Kxl2csEye7DQWq4nQ5RWGFOpdfKQRiFg
[/code]
Beispiel für ein Android-Token:
[code]EAANBn3nuJZQcBOZCLGIV7K11rMynFvh0qtntMfm8ZXZADwbq1dYZBWmpFZAdVYwaFQYKZB9sGeRPNURheyRHomGyqxr67RlSlsUNmFTRJRxSKMq8rWqCTtWJhCdZAZB91O97OpCXlVO2wLLY9UqnCmwhwkcBxj99S5woRBX07R7Y1zL08Qn9c00rFj1UH0yhj95JX5HtTrVohZCmf6Rv1likU1KNjsWyZBEX9veEjUDuA797e2SY8uNKBfec9vR3msimGzFjVEQjoAZD
[/code]
Wie Sie sehen können, ist das Token auf Android viel kürzer. Wie kann man das beheben und auf beiden Plattformen (wie auf Android) das gleiche Token erhalten?