You can grant Tasks.Read
delegation permission to the application, and then use the auth code flow to log in to your user and get the token, then the user will have read-only permission and cannot update tasks.
If the answer is helpful, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.