Loading…
Skip to content
All journal
Mobile AppsApp Links

Open the intended app screen after sign-in

Keep a validated mobile-app link destination through sign-in, then check account access. Test successful, cancelled and denied routes before sign-off.

Rootscratch ·

A smartphone in a dark cradle shows a sign-in form with Booking details retained as the destination. Headline: Keep the destination after sign-in. Rootscratch branding.

When a customer opens a link to a private app screen, sign-in should preserve the intended destination and check whether that account can access it. Sending everyone to the home screen leaves them searching for the task they already chose. Opening the record without an access check creates a different problem.

Consider a hypothetical appointment app. A customer taps a booking-details link in an email while signed out. After signing in, they should reach that booking if it still exists and belongs to their account. If they cancel sign-in, the app should leave the private details closed and give them a clear way to continue elsewhere.

Route the link to the app

A deep link takes a user to specific app content. Android App Links add a verified association between an app and its website so supported web links can route to the app without the usual disambiguation dialog.[1] That association handles link routing; it does not establish which customer is signed in or authorize access to a booking.[3]

Agree which domains and paths the app accepts. Check the supported phone and operating-system versions, and decide what the website should show when the app is absent. A link that opens correctly on a developer's phone is only one part of that handoff.

Keep the destination through sign-in

Retain a validated app destination while the customer signs in. Avoid treating an arbitrary URL parameter as an instruction to open any screen or external address.

Google's conditional-navigation example sends a user from a profile screen to login, then returns them to the profile after successful authentication.[2] It also handles a decision not to log in without repeatedly prompting the user.[2] This is an Android implementation example, not a promise that every app framework supplies that behavior automatically.

For the appointment workflow, show that the booking link was opened and that sign-in is required. Keep the next step clear. Do not display customer names, appointment notes or other private record details before access is confirmed.

Check access after the account is known

Validate link parameters and check authentication and authorization before exposing sensitive information, as Android's deep-link security guidance recommends.[3] A booking identifier received through a link should remain a lookup input, not evidence that the recipient owns the booking.

OWASP recommends validating permissions on every request.[4] Apply that rule to the API that retrieves the booking, even if the app interface already performed a check. Try opening the same link with another signed-in account. It should not return the first customer's private details.

If the record has been removed or access is no longer allowed, explain that the booking cannot be opened. Offer an appropriate route back without showing stale protected information.

Test the complete handoff

Open the link with the app closed and again with it already running. Repeat while signed out, signed into the correct account and signed into a different account. Cancel sign-in, retry after a failure and check an unavailable booking. Confirm the resulting screen and the API response, rather than checking only whether the app launched.

Rootscratch's Mobile App Development service includes account flows, backend integration and agreed test devices.[5] Bring one link your customers rely on, the screen it should open and the accounts allowed to use it. Those details give the project a specific sign-in handoff to build and demonstrate.

Sources

[1] https://developer.android.com/training/app-links — Android Developers: about deep links [2] https://developer.android.com/guide/navigation/use-graph/conditional — Android Developers: conditional navigation [3] https://developer.android.com/privacy-and-security/risks/unsafe-use-of-deeplinks — Android Developers: unsafe use of deep links [4] https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html — OWASP: authorization cheat sheet [5] https://rootscratch.com/services/app-development — Rootscratch: Mobile App Development

From Koronadal City

Tell us what you need to build or improve.

Based in Koronadal City, South Cotabato, Mindanao. Working remotely with businesses throughout the Philippines and worldwide.