-
Notifications
You must be signed in to change notification settings - Fork 110
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
🐛 Bug Report: OAuth2 under Windows #96
Comments
yea, so Fluttter_web_auth for windows is still buggy and the approach is not perfect for windows implementation |
@DanielAlbertSwan, what happens if you do: createOAuth2Session(provider: "microsoft", success: "http://localhost:<some port>"); I actually assume flutter_web_auth_2 will work fine, but the Appwrite SDK will throw an exception because of: sdk-for-flutter/lib/src/client_io.dart Lines 322 to 325 in f8480fd
|
@2002Bishwajeet Your bug should already be fixed (ThexXTURBOXx/flutter_web_auth_2#7), so it is not inherently buggy. However, yes, there is an important limitation: The error message you get should already tell you what you did wrong :)
For now, the callback scheme must start with |
Yea, the limitation is the thing I am talking about ( sorry for reframing it wrong), and my callback Url scheme since must start with localhost, so maybe not be possible to use in production (it's not gonna be localhost forever🙂). I am still thinking of a better approach and it might take some time to discuss with my team before making a PR |
Hi stnguyen that doesn't work the callback url scheme on windows must be http://localhost:{some port} This needs to be done here sdk-for-flutter/lib/src/client_io.dart Line 317 in f8480fd
here we need something like this callbackUrlScheme: Platform.isWindows ? "http://localhost:4711" : appwrite-callback-" + config['project']!,
for port we need a logic to determine a free one. |
The question is how much sense does it make to allow a callbackURIScheme for the windows platform you could just determine a free port on the system and ignore the callbackURIScheme |
I have done some research and found the following https://pub.dev/packages/desktop_webview_window maybe the sdk or even flutter_web_auth could utilize it and react on the url changed callback. |
@stnguyen90 One basic understanding question how is decide that the success redirection is the appwrite-callback-[PROJECT_ID] scheme? |
The default success sends users to /v1/auth/oauth2/success which has this code: |
I think a solutuon with the current flutter_web_auth2 would be to change the callback scheme to localhost and free port amd then set the success url to localhost:port/v1/auth/oauth/success as only the path is checked this should give us the key and secret |
OK I confirmed that this workaround works. I would really favour to do this as a solution for the moment because a solution based on the callback scheme will definitely take more time to implement in flutter_web_auth_2 |
@Mabenan wow! this is awesome! Thanks so much for testing this! |
I will try to make a PR for this |
@Mabenan, PR for what? 🧐 |
For changing the value we give flutter_web_auth_2 as callbackUri under windows. So that we don't run into an exception. See the origin of this issue. |
@Mabenan oh, you want to change the appwrite SDK code because the current code actually doesn't work yet? If so, please make sure to submit the PR in the sdk-generator repo. |
Yes this was exactly my plan 😉 |
@Mabenan, sounds good! I'll also discuss with the team to make sure we're okay with this approach. |
I get exactly that with :
Does this actually work ? I'm getting "Invalid OAuth2 Response. Key and Secret not available." after the redirect to the app. |
You have to ensure that the path matches exactly this one of your appwrite version https://github.com/appwrite/appwrite/blob/fd7a2cbfada41481495d2ffc6bf4fdec630c9f9f/app/controllers/api/account.php#L46 At the current version this is /auth/oauth2/success . You used the /v1 at the beginning which is wrong. For ex.: "http://localhost:9999/auth/oauth2/success" |
Having this same issue in version 11.0.1 with appwrite cloud. Code for reference.
|
👟 Reproduction steps
Run Windows Desktop app and create an OAuth session like this
createOAuth2Session(provider: "microsoft");
👍 Expected behavior
I get an Session like I do when I make this in Browser
👎 Actual Behavior
I get an Exception from flutter_web_auth_2 that the callbackUrlScheme is wrong. It is because the following check is implemented by flutter_web_auth_2
https://github.com/ThexXTURBOXx/flutter_web_auth_2/blob/21316bc2d76a12ac19d4c3db9eb05531bc0cd3ed/flutter_web_auth_2_windows/lib/flutter_web_auth_2_windows.dart#L65
🎲 Appwrite version
Version 1.0.x
💻 Operating system
Windows
🧱 Your Environment
No response
👀 Have you spent some time to check if this issue has been raised before?
🏢 Have you read the Code of Conduct?
The text was updated successfully, but these errors were encountered: