Troubleshooting Http Auth in Firefox 3 Bookmarklets

Creating a bookmarklet that interacts with web APIs can be tricky, especially when it comes to authentication. If you’ve ever attempted to post links to your del.icio.us account using a bookmarklet in Firefox 3, you might have encountered an access denied error, which can be frustrating. In this post, we will break down the problem and provide a solution to ensure your bookmarklet works seamlessly with authentication.

The Problem

The issue arises when you try to create a bookmarklet for posting bookmarks to a separate del.icio.us account via an API. After crafting your bookmarklet code, you may have noticed that it results in an error message:

<result code="access denied" />

This indicates that the credentials sent are not being accepted by the server. Upon manually revisiting the URL in the address bar, however, the response changes to:

<result code="done" />

This suggests that the credentials work correctly when accessed directly, but something goes awry when the request comes from the bookmarklet.

Solution

Step 1: Analyze the Traffic

Initially, it’s crucial to understand what exactly is being sent by the browser when executing the bookmarklet. Here’s how you can analyze the traffic:

  • Use Network Monitoring Tools: Tools like Wireshark or browser developer tools (F12 in most browsers) will help you inspect the outgoing requests.
  • Check Authentication Data: Look for the details to see if the authorization data for del.icio.us is being sent at all or if it’s being formatted incorrectly.

Step 2: Adjust Your Bookmarklet Code

If the auth data doesn’t seem to be sent correctly, Glean insights from the traffic analysis and modify your bookmarklet code. The general structure should look like this:

javascript:void(
    open('https://seconduser:password@api.del.icio.us/v1/posts/add?url='
          +encodeURIComponent(location.href)
          +'&description=' + encodeURIComponent(document.title),
          'delicious','toolbar=no,width=500,height=250'
        )
);

Key Elements to Ensure:

  1. Correct URL Encoding: Make sure that the URL and description are properly encoded using encodeURIComponent.
  2. Correct Credentials: Double-check that the seconduser and password fields contain valid credentials.

Step 3: Test Your Bookmarklet

  • After making the adjustments, save the updated bookmarklet in your Firefox bookmarks.
  • Click on it to test and observe the results in the traffic analysis tool.

Additional Tips

  • Experiment with Different Browsers: Sometimes the issue might arise due to browser-specific constraints, especially with older versions like Firefox 3. If possible, try updating or testing on a different browser.
  • Check for Updates: Always ensure that your APIs and browser are up to date as there may be important updates or fixes that address these concerns.

Conclusion

Creating a del.icio.us bookmarklet in Firefox 3 that correctly handles Http Auth can be a challenge, but by analyzing the outgoing requests, making necessary adjustments, and proper testing, you can achieve success. If you continue to face issues, consider reaching out to developer forums or communities for further assistance.

By following these steps, you should be able to bypass the access denied error and smoothly post bookmarks directly from your Firefox bookmarklet.