When students try to access WebWork 2.18 from Blackboard via LTI link:
LTI Debug results show that students username and ID are assigned correctly. But it returns error and does not allow to login and see assignments.
===== timestamp info =======
oauth_nonce = 1705998351
WW_server_time = 1705998352
diff(server-oauth) = 1 seconds (0.0166666666666667 minutes)
============================
=========== summary ============
User id is |thamzayev| (obtained from lis_person_contact_email_primary which was preferred_source_of_username)
User mail address is |thamzayev@ada.edu.az|
strip_domain_from_email is |1|
Student id is |000002977|
preferred_source_of_username is |lis_person_contact_email_primary|
fallback_source_of_username is ||
preferred_source_of_student_id is |lis_person_sourcedid|
================================
The following path was reconstructed by WeBWorK. It should match the path in the LMS:
https://webwork.ada.edu.az/webwork2/JAFAROV-2024-Spring-Calculus-2/HW_1_Substitution_and_Area_Calculation/
Error messages
Can't locate object
method "new" via package "WeBWorK::Authen::LTIAdvanced::SubmitGrade"
(perhaps you forgot to load
"WeBWorK::Authen::LTIAdvanced::SubmitGrade"?) at
/opt/webwork/webwork2/lib/WeBWorK/Authen/LTIAdvanced.pm line 573.
Context
568: # we need to submit the grade is kept up to date.
569: my $LTIGradeMode = $ce->{LTIGradeMode} // '';
570: if ($LTIGradeMode eq 'course'
571: || $LTIGradeMode eq 'homework')
572: {
573: my $submitGrade = WeBWorK::Authen::LTIAdvanced::SubmitGrade->new($c);
574: $submitGrade->update_sourcedid($userID);
575: }
576:
577:
return 1;
578: }
LTI Configurations are like below:
authen_LTI_1_1.conf
$LTI{v1p1}{LMS_name} = 'Blackboard';
$LTI{v1p1}{LMS_url} = 'https://ada.blackboard.com/';
$LTI{v1p1}{preferred_source_of_username} = 'lis_person_contact_email_primary';
$LTI{v1p1}{fallback_source_of_username} = '';
$LTI{v1p1}{strip_domain_from_email}
= 1;
$LTI{v1p1}{lowercase_username} = 1;
$LTI{v1p1}{preferred_source_of_student_id} = 'lis_person_sourcedid';
$LTI{v1p1}{BasicConsumerSecret} = 'ElesgerTustunuBurax';
$LTI{v1p1}{NonceLifeTime} = 60; # in seconds
$LTI{v1p1}{OverrideSiteURL}
= '';
$LTI{v1p1}{OverrideSiteProtocolDomain} = '';
$LTI{v1p1}{LMSrolesToWeBWorKroles} = {
'librarian' => 'guest',
'observer'
=> 'guest',
'visitor' => 'guest',
'Guest'
=> 'guest',
'Designer' => 'professor',
'instructor'
=> 'professor',
'Instructor' => 'professor',
'Faculty'
=> 'professor',
'Teacher' => 'professor',
'Student'
=> 'student',
'Learner' => 'student',
'student'
=> 'student',
'AI/TA' => 'ta',
'TA'
=> 'ta',
'Teaching Assistant' => 'ta',
'Teaching Assistant (TA)' => 'ta',
'Non-editing teacher' => 'ta',
'Grader' => 'ta',
};
$LTI{v1p1}{grader} = 'WeBWorK::Authen::LTIAdvanced::SubmitGrade';
authen_LTI.conf
include("conf/authen_LTI_1_1.conf");
$debug_lti_parameters = 1;
$debug_lti_grade_passback = 0;
$authen{user_module} = [
# { '*' => 'WeBWorK::Authen::LTIAdvantage' },
# first try LTI 1.3
{ '*' => 'WeBWorK::Authen::LTIAdvanced' }, # next try LTI 1.1
{ '*' => 'WeBWorK::Authen::Basic_TheLastOption' }
# fallback authorization method
];
$LTIVersion = 'v1p1';
$LTIAccountCreationCutoff = 'ta';
$LMSManageUserData = 1;
$external_auth = 0;
$LTIGradeMode = 'homework';
$LTIGradeOnSubmit = 1;
$LTICheckPrior = 0;
$LTIMassUpdateInterval
= 86400; #in seconds
@LTIConfigVariables = (
#'LTI{v1p1}{LMS_name}',
#'LTI{v1p3}{LMS_name}',
#'LTI{v1p1}{LMS_url}',
#'LTI{v1p3}{LMS_url}',
#'external_auth',
#'LTIGradeMode',
#'LMSManageUserData',
#'debug_lti_parameters'
);
1; # final line of the file to reassure perl that it was read properly.