@@ -73,7 +73,7 @@ def _authn_response(self, context):
7373 request_args = rargs , state = aresp ['state' ])
7474
7575 user_info = self .user_information (
76- atresp ['access_token' ], atresp ['orcid' ], atresp [ 'name' ] )
76+ atresp ['access_token' ], atresp ['orcid' ], atresp . get ( 'name' ) )
7777 internal_response = InternalData (
7878 auth_info = self .auth_info (context .request ))
7979 internal_response .attributes = self .converter .to_internal (
@@ -82,7 +82,7 @@ def _authn_response(self, context):
8282 del context .state [self .name ]
8383 return self .auth_callback_func (context , internal_response )
8484
85- def user_information (self , access_token , orcid , name ):
85+ def user_information (self , access_token , orcid , name = None ):
8686 base_url = self .config ['server_info' ]['user_info' ]
8787 url = urljoin (base_url , '{}/person' .format (orcid ))
8888 headers = {
@@ -92,13 +92,15 @@ def user_information(self, access_token, orcid, name):
9292 r = requests .get (url , headers = headers )
9393 r = r .json ()
9494 emails , addresses = r ['emails' ]['email' ], r ['addresses' ]['address' ]
95+ rname = r .get ('name' ) or {}
9596 ret = dict (
9697 address = ', ' .join ([e ['country' ]['value' ] for e in addresses ]),
9798 displayname = name ,
9899 edupersontargetedid = orcid , orcid = orcid ,
99100 mail = ' ' .join ([e ['email' ] for e in emails ]),
100101 name = name ,
101- givenname = r [ 'name' ][ ' given-names'][ 'value' ] ,
102- surname = (r [ 'name' ][ ' family-name'] or {}).get ('value' ),
102+ givenname = ( rname . get ( ' given-names') or {}). get ( 'value' ) ,
103+ surname = (rname . get ( ' family-name') or {}).get ('value' ),
103104 )
105+
104106 return ret
0 commit comments