OpenID Issues Fixed
Well, it turns out that the problem with OpenID was mainly a buggy math library. Apparently the GMP module is not compiled correctly on my BlueHost server, which causes signatures to be calculated incorrectly by the PHP OpenID library, resulting in a ‘Bad signature’ error code. If you have similar problems, try switching on the constant Auth_OpenID_Buggy_GMP like so in (wordpress root)/wp-config.php:
-
define(Auth_OpenID_BUGGY_GMP,true);
After you do that, make sure there are no entries left in the table (prefix)_openid_associations. I think rebuilding the tables from the preferences page might do this, but if that doesn’t work you’ll have to do what I did and remove it from the table by hand.
Once I had that fixed, I had to update the interface for adding OpenIDs to accounts, I guess because of an incompatibility with WordPress 2.6. It seems what was happening was that the hook function for the return wasn’t getting called because it wasn’t being redirected back to the plugin page. To fix it I had to change the $return_to parameter passed to start_login to point back to the plugin page’s address. I then had to modify start_login to check for a “?” in the URL and pick “?” or “&” appropriately for appending the action parameter. (The ternary operator is a beautiful thing in PHP).
I’m not sure if this change will create a problem when adding more than one URL at once, because the form is set to call the URL it’s retrieved from, which includes all of the OpenID information. I’m fairly sure it won’t because the handler for that form uses POST data, so it shouldn’t be bothered by the GET data in the URL.
If anyone else is having similar problems with the plugin and my explanations aren’t adequate, please comment and I’ll see what I can do to help. Another thing to try is downloading the most current version of the PHP OpenID library (2.x.x) and copying the Auth directory into the plugin’s root directory.
Now, on to my next task: comment threading.
