llfbandit / app_links

Android App Links, Deep Links, iOs Universal Links and Custom URL schemes handler for Flutter.
https://pub.dev/packages/app_links
Apache License 2.0
176 stars 68 forks source link

Link over 2048 chars #24

Closed pisolofin closed 1 year ago

pisolofin commented 2 years ago

I'm using app_links version 3.2.0 in my Windows application. I use app_links to do a login in my external application. The link contains authorization token and other information.

Authorization token is very long and the total length is more than 2048 characters. If the link to my application is more than 2048 application starts, but _appLinks.uriLinkStream.listen does not called.

I used the example application to try it.

That link works, but is I add any single chars the application stop to work sample://foo/#/book/hello-world2?user_id=2&access_token=9xXTrme1et7IJHV1xfCQ2EoCN8KWf0INgIwSqpZBUuWbBSBT13Lm0plLCtDPVsaA38oM8QugxJ7gQH8poc4BFw6IIeISuidDQ9JVVcoh5UCPJpjyPhfVyh1panxJ7lSOiKkGdHfIez6oLov4c13vQMAOPBMujikzDQL096lOgg2gWJI1psyU7LSVeekXiBbXioJZ4PxzTxs4z3qVp3GkIvH4qtSAQnVGDVpHcKf5a5BYUiT8nAtcjVoyF9xcZrl9Uf9GFRSAYMA1K9zh6ojtRsMfuAPgBW4ZhzKa3wFgKmPRMkgVwyaa1G563YUlH9J724ZRC7tNsiVRrjGr4gyGMqgvd0N6L7v4e6ov4mEt8dAfePeRdaxeoHI0c5qTToJOnnJChSyZLh8tVnwp79NsmzMu7EKrOEM6cf98kEN2RLBr0ENqpWy1CZUG2ijAcM3K6cKhUYkQ9JYWq5oV20RL39KpsVAUh2KvbjrfW1Gg32Kpqs2K0mQ69ZJpcLZYhV4jRQzxvBTEiSeVlRWHZvfStfmm6wZ3bEDEilqqYlK5jzCUGK53BvdIHMdTnQSkrwnMvahod8ATK0df52JbsDGp2EI1ZmBAiBz87HPRc38RZY8wpalRZ1DnYIgGVLf4AUZTfwz4ZYbLZdTbGPPRNndPLlXOJxXcxzepDKR2uh7vdS26UJSLe3JEzyPvjHZqWeToQkve5gsdGBQT4EPcwWiWZlUodFY4N8zzgmaqM6PekEA9duOnsZ8IHin5B9LJUm9et9D71SiYBSOWRPMfCY9rY10b3DxmYoGUm7rfSb5isaJU9KrjWLBMhJkzCyFCNx5YT7CxXSgeWGL7R5P65UceaocwZzVEyzuu01p57aKKFCk9x7mAxei2GxEQOtVAVT44dLW29gaC0atERaodL7f9PyQarf6xs66eeGYt1c5gQk1sd3PJ0eunirsXuGdn3dqu7frk47GgRwxJwEcQnbWA4VrHxmqKBCb8vGRcpG3xESOSz1kMYFl85VirFJG5NBk2p0Evbahf0fosOdBMLG4jjVqthXTzsDwc6BdKh4ESlJmcHizr9y4Rjo7tyqxef0gCzobOXvM8h6JZKdtFLaUdMKu9GsiYFLdjjmJhVCx1SEg2njC9OgL8Ld92coJyRTowVhTY7OMxtcICVKsrP8Nem6igNqLERCcIEEqtMpts062ZSvnIiF2IEz9sqxGNbbPrny2tuWhdp2JpduGXNdWuwZeOXElcnNy4YRQeieH2fuxF4rJnjZG6iDNLtpUY8QRj5JjrY1dFdteWi8kQbSXvT61HscBrEqZteRa4Gmay58qaKBmY1YjXwHdeyff1M0AqnnSRCWEodxqeeRNnV8tcy0ZDenbuZzuYYPzgX1WHMQdTvyy2NNlSL0gXshzYRFsvUVBD4MlojGxeuTDmXLqWTAWV5e2tVL7kMkHch26GnDVSJDdar4dRJSDPhHW9aTFh1FF6uXRNgyGymEOEdzHVu95p0fJSym993w3gPltfnczaSOIIQdOcyzM4AFU3RSFvyX1CKUPFZCkXIxM5h4mJ3yuiJgqTOpBTEdK57T8vxQWMprSmgANL8o8gG3qhnC9cHRexbmEBn999c7AYHoWX8G9DwmepPl9F1uMGhHgjkXXNECN35AOLZQDh9hzvDOOfx8OwkpoWbzMODGQjOb05B2hrj5pRewOt9Wt6zeEJ9I9Y6tYbCcuwUCIGJ8dvhYueWj1gWm7crgEcOwKyV4RFiQ9nd3SxMH8FNxkWazlZERlPLFg9CGNb4yhxf620jlpmWAkfVMo22CJuIM0MflcGmjFT6piOEIFSZHIVV70uZGj7NxVWJ2Zko6C4iQpwEnr9VvGsYMIhAUOLf1tt5TGQWZoMn8UMr6TWIRzjpUAo9MqYwmZmc4mP0ydzot6o1Nw4hGownIA0357m9w7XqcwqZbdSMwnHM5TbVeZqP96wVgpH11FdxXWFCWPe72OQymiSATkyjS

There is some workaround to use it?

Tanks.

llfbandit commented 1 year ago

Thanks for the report. I don't see any workaround here.

It could be a limitation or bug around all this:

When app is terminated, if you call at first getInitialAppLink() does it gives you a truncated link? You can also manually try with getLatestAppLink() afterwards to better locate a potential bug.

pisolofin commented 1 year ago

I did some tests.

I can call a very long http url. http://localhost:30000/test/long-call?user_id=2&access_token=9xXTrme... I can call flutter application with long params. .../example.exe "foo/#/book/hello-world2?user_id=2&access_token=9xXTrme... I can call C# application with long params. .../example-c.exe "foo/#/book/hello-world2?user_id=2&access_token=9xXTrme... If I try to call it from browser sample://foo/#/book/hello-world2?user_id=2&access_token=9xXTrme... nothing happens. Browser asks me to open application, but application doesn't start. In Flutter and in C# example.

llfbandit commented 1 year ago

So if I understand you well, this is indeed the limitation of GET URLs length over 2048 chars... Well, bad news but good news since a clear access token is not the best idea regarding security.

pisolofin commented 1 year ago

Yes, you got it right. Yes also for the second part, I will implement OAuth2 code style authentication also for non-OAuth2 code flow authentication. On the mobile app all works great.