Deep linking into Speedgrader fails if not logged in

0 Likes

When allocating assignments to assess across multiple staff, I make extensive use of Canvas's API which includes the following field when querying assignment details:

      speedgrader_url = "https://____/courses/53666/gradebook/speed_grader?assignment_id=216050&student_id=110107"

(somewhat redacted). These URLs provide a direct link into individual assignment submissions on a per-student basis.

However, if a staff member with access to the course takes that URL and follows it, they will NOT be taken to the correct assignment if they are not already logged into Canvas. After they enter their credentials they are simply taken to the first assignment in the list.

This has lead to significant issues as I have circulated URLs for people to follow and assess, and they've ended up spending time assessing the wrong assignment because the link was unreliable. (OTOH, it's still far MORE reliable than asking them to head to Speedgrader and scroll through a list of 200 students to assess particular ones.)

I don't know whether this is a serious technical problem or simply an oversight but it would be fantastic if the deep linking could be relied upon.

Tags (2)
9 Comments
Stef_retired
Instructure Alumni
Instructure Alumni
Status changed to: Open
 
chriscas
Community Coach
Community Coach

Hi @a1063023 ,

I can't seem to reproduce this issue on our Canvas environment.  If I copy an exact URL from SpeedGrader, open a new incognito/private browser window, and paste the URL, I get forwarded to the correct place in SpeedGrader after logging in.  There could be something unusual with your login system or Canvas setup causing this.  If you're on a pain Instructure-hosted Canvas environment, I'd definitely contact Canvas support about this.

-Chris

Stef_retired
Instructure Alumni
Instructure Alumni
Status changed to: Moderating
 
Stef_retired
Instructure Alumni
Instructure Alumni

@a1063023  Based on @chriscas 's observation we've placed this idea into Moderating status to give you the opportunity to check with Canvas Support.

James
Community Champion

@a1063023 

I see the same thing that Chris ( @chriscas ) does, so I suspect it is related to the authentication method being used. We use CAS as our login to Canvas and it redirects properly. It may be that some methods do not support that capability.

I am not 100% sure what you mean by taken to the first assignment in the list. I thought that perhaps your authentication provider was stripping the query parameters and returning URL without the assignment ID and student ID. If I try to access SpeedGrader without that information, it comes back with a nothing here -- page not found error.

If I pass it only the first query parameter (after the ? and before the & is missing), then it comes up with an assignment and the first student in the list, so I think this is what you are describing.

That suggests that your authentication provider is only recognizing the first query parameter and stripping everything off the end.

I can think of a few things that might be related.

My first question is whether these links work for you when you paste them directly into Canvas without being logged in or if you see the same thing the other staff do. If you're seeing something different than they are, then it might be related to the fact that they are seeing it through email. Some email clients break lines and if the &student_id got onto a separate line or got a space put before it, it may not be part of the link at all. The people might be clicking on the link you sent but it may not be the full link you sent. Putting the URL on a line by itself is the best way to try to avoid this, but even then it may be too long.

A second thing might be that the ampersand needs escaped or encoded to bypass your authentication system. Try using & instead of & between the assignment_id and student_id and see if that works. Also test %26 instead of & to see if that works. That would be a pain to modify each time, so I hope that's not it. If it is, you might set up a workflow that  allows you to copy a URL and returns a fixed link.

Third, when you say speedgrader_url = "...", that is not actually how it appears in the email message, is it? I'm just checking. You don't want quotes around the URL.

 

If your system doesn't support redirect properly, then educating the users about the proper way to handle things seems to be the best solution. What you might do is provide two links to remind them to log into Canvas.

  1. Make sure you are logged into Canvas : link to log into Canvas
  2. Access the student's submission: link to SpeedGrader

This could be part of something you copy/paste into the emails. If I did it a lot, I would probably set up something where I would paste the SpeedGrader URL and then it generated the entire block. Alternatively, some operating systems support multiple clipboards (it has to be enabled in Windows) and then the first part could be on the multiple clipboard while the SpeedGrader link is on the main clipboard. You could also set up a keyboard macro that would type that and then paste the clipboard as the last part.

a1063023
Community Explorer

@chriscas & @James — thanks so much for looking into this and taking the time to reply. You're right in one respect — now that I try to reproduce this issue personally I also don't see anything wrong with the current behaviour.

However, I've had just in the last couple weeks in our mid-year marking season a number of queries relating exactly to this. Chances are high there's a strong OS/browser dependence to the behaviour and may be that this isn't anything that can be improved on the Canvas end.

Currently I format the URL in the emails for circulation as:

SpeedGrader link: <https://___/courses/64478/gradebook/speed_grader?assignment_id=207753#%7B%22student_id%22%3A%22110934%22%7D>

I don't recall the exact steps for why I went with that particular escape scheme, which now seems rather clunky. While this appears to have been working for me is probably not "best" and could potentially be part of the problem. I do remember testing the un-escaped version and had issues with that in the past, but nothing is jumping out at me to indicate it wouldn't work now.

I think it's probably best to close this here for now and just hold my breath that the behaviour improves going forward as people update their OS and default browsers over time... really appreciate the input and sorry to have caused noise.

Stef_retired
Instructure Alumni
Instructure Alumni
Status changed to: Archived
 
Stef_retired
Instructure Alumni
Instructure Alumni

Thanks for providing the update, @a1063023 . We'll archive this idea for now.

James
Community Champion

@a1063023 

The link you just provided is not the same link you had before an explains why it may not work.

You have a fragment #{"student_id":"110934"} in there and that would likely get stripped off, leaving just the assignment ID so it starts with the first student in the list.

Try using the original format you provided: ?assignment_id=216050&student_id=110107