@@ -73,7 +73,7 @@ def _authn_response(self, context):
73
73
request_args = rargs , state = aresp ['state' ])
74
74
75
75
user_info = self .user_information (
76
- atresp ['access_token' ], atresp ['orcid' ], atresp [ 'name' ] )
76
+ atresp ['access_token' ], atresp ['orcid' ], atresp . get ( 'name' ) )
77
77
internal_response = InternalData (
78
78
auth_info = self .auth_info (context .request ))
79
79
internal_response .attributes = self .converter .to_internal (
@@ -82,7 +82,7 @@ def _authn_response(self, context):
82
82
del context .state [self .name ]
83
83
return self .auth_callback_func (context , internal_response )
84
84
85
- def user_information (self , access_token , orcid , name ):
85
+ def user_information (self , access_token , orcid , name = None ):
86
86
base_url = self .config ['server_info' ]['user_info' ]
87
87
url = urljoin (base_url , '{}/person' .format (orcid ))
88
88
headers = {
@@ -92,13 +92,15 @@ def user_information(self, access_token, orcid, name):
92
92
r = requests .get (url , headers = headers )
93
93
r = r .json ()
94
94
emails , addresses = r ['emails' ]['email' ], r ['addresses' ]['address' ]
95
+ rname = r .get ('name' ) or {}
95
96
ret = dict (
96
97
address = ', ' .join ([e ['country' ]['value' ] for e in addresses ]),
97
98
displayname = name ,
98
99
edupersontargetedid = orcid , orcid = orcid ,
99
100
mail = ' ' .join ([e ['email' ] for e in emails ]),
100
101
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' ),
103
104
)
105
+
104
106
return ret
0 commit comments