[Twisted-Python] exceptions.TypeError: ('Could not adapt', <twisted.spread.pb._PortalAuthChallenger instance at 0x013E3760>, <InterfaceClass twisted.cred.credentials.IUsernamePassword>)
Justin Johnson
justinjohnson at gmail.com
Fri Mar 30 11:55:25 MDT 2007
> >Does anyone have any pointers on what I should be looking for here?
> >Is there any way I can accomplish my goal in a more maintainable way?
>
> It's not clear to me how this worked in the first place. ;) The
> credentials object being adapted to IUsernamePassword should always
> have been a _PortalAuthChallenger, and so it only should have ever
> been adaptable to IUsernameHashedPassword and IUsernameMD5Password.
>
> The way you want to write requestAvatarId, though, is to inspect the
> credentials object to see what interfaces it provides and them handle
> it accordingly. You can do this by adapting and catching the TypeError,
> adapting with a default and checking for that, or using the providedBy
> method of the interface object. The important point is that you have to
> be able to handle every kind of credentials object which the you have
> declared you can handle (with the credentialInterfaces attribute). In
> this specific case, I believe your checker declared it could handle both
> IUsernamePassword and IUsernameHashedPassword, but its implementation can
> only actually handle IUsernameePassword.
>
> Hope this helps,
Yes, this is helpful. It has been too long since I looked at this
code. Thank you.
Justin
More information about the Twisted-Python
mailing list