This is a little hard to read.  String substitutions might be clearer:
```
return "{id}:{resource_link}:{user_id}".format(
    id=urllib.quote(self.lti_id),
    resource_link=self.get_resource_link_id(),
    user_id=self.get_user_id()
)
```