Twitter account/verify_credentials returning 34 error code
Categories:
Resolving Twitter API Error 34: 'Page not found' for verify_credentials

Encountering error code 34 ('Page not found') when using Twitter's account/verify_credentials
API endpoint can be frustrating. This article explains common causes and provides solutions for PHP applications using Twitter OAuth.
The account/verify_credentials
endpoint is crucial for confirming the authenticity of a user's access token and ensuring your application can interact with their Twitter account. When this endpoint returns an error 34, it typically indicates an issue with how your application is making the request, rather than the endpoint itself being unavailable. This guide will walk you through diagnosing and fixing this problem, particularly focusing on PHP implementations with Twitter OAuth.
Understanding Twitter API Error 34
Twitter API error code 34, often accompanied by the message 'Page not found', is misleading. It rarely means the endpoint URL is incorrect or doesn't exist. Instead, it's a generic error that Twitter returns when the API request is malformed or lacks proper authentication, preventing the server from processing it correctly. For account/verify_credentials
, this usually points to problems with your OAuth signature, consumer keys, or access tokens.
flowchart TD A[Application Sends Request] --> B{Twitter API Receives Request} B --> C{Validate OAuth Signature & Credentials} C -- Invalid Signature/Credentials --> D[Return Error 34] C -- Valid Credentials --> E[Process Request] E --> F[Return User Data]
Flowchart of Twitter API request processing leading to Error 34
Common Causes and Solutions
Several factors can lead to error 34. Identifying the exact cause requires careful inspection of your OAuth implementation and the credentials you're using. Here are the most common culprits:
1. Incorrect OAuth Signature or Parameters
The most frequent cause of error 34 is an improperly generated OAuth signature. Twitter's OAuth 1.0a implementation is very strict about the signature base string and the parameters included in it. Any deviation, such as incorrect sorting of parameters, missing parameters, or improper encoding, will result in a failed authentication.
1. Verify OAuth Library Configuration
Ensure your PHP OAuth library (e.g., abraham/twitteroauth
) is correctly initialized with your consumer key, consumer secret, access token, and access token secret. These are distinct from each other and must be used in their respective places.
2. Check for URL Encoding Issues
All parameters in the OAuth signature base string and the Authorization
header must be properly URL-encoded according to RFC 3986. Most OAuth libraries handle this automatically, but custom implementations might get this wrong.
3. Ensure Correct HTTP Method
The account/verify_credentials
endpoint typically uses a GET
request. Confirm that your application is sending a GET
request, not POST
or another method, as this affects the signature generation.
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$consumerKey = 'YOUR_CONSUMER_KEY';
$consumerSecret = 'YOUR_CONSUMER_SECRET';
$accessToken = 'YOUR_ACCESS_TOKEN';
$accessTokenSecret = 'YOUR_ACCESS_TOKEN_SECRET';
$connection = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);
// Ensure the request is a GET request
$user = $connection->get("account/verify_credentials");
if ($connection->getLastHttpCode() == 200) {
echo "User verified: " . $user->screen_name;
} else {
echo "Error: " . $connection->getLastHttpCode() . " - ";
print_r($user);
}
?>
Example of correctly using abraham/twitteroauth
for verify_credentials
2. Expired or Revoked Access Tokens
Twitter access tokens can expire or be revoked by the user. If a user deauthorizes your application, or if there's a security event, the token becomes invalid. Using an invalid token will lead to authentication failure, often manifesting as error 34.
1. Check Token Validity
If you suspect an expired or revoked token, try to re-authenticate the user through your application's OAuth flow. If successful, the new tokens should resolve the issue.
2. Inspect Twitter Developer Portal
Log into your Twitter Developer account and check the 'Keys and tokens' section for your application. Ensure your consumer keys and secrets are correct and haven't been regenerated without updating your application.
3. Incorrect API Endpoint Version or URL
While less common for verify_credentials
, using an outdated or incorrect API endpoint URL can also trigger error 34. Twitter's API endpoints often include versioning (e.g., 1.1
).
For account/verify_credentials
, the correct endpoint is https://api.twitter.com/1.1/account/verify_credentials.json
. Ensure your library or custom implementation is targeting this exact URL. Most well-maintained OAuth libraries handle the base URL and versioning correctly, but it's worth verifying if you're using a custom solution or an older library version.
Debugging Strategies
When facing error 34, effective debugging is key. Here are some strategies:
1. Log Full API Responses
Instead of just checking the HTTP status code, log the entire response body from Twitter. Error 34 might sometimes come with additional details in the JSON response that can hint at the specific problem.
2. Use a Proxy/Sniffer
Tools like Wireshark or Fiddler (for desktop apps) or browser developer tools (for web apps) can help you inspect the raw HTTP request being sent, including the Authorization
header. This allows you to verify the OAuth signature and parameters directly.
3. Test with a Known-Good Library/Example
If you're using a custom OAuth implementation, try switching to a widely used and well-maintained library like abraham/twitteroauth
for PHP. If it works with the library, the issue is likely in your custom code. If it still fails, the problem might be with your credentials themselves.
4. Isolate the Problem
Try making other simple API calls (e.g., statuses/user_timeline
) with the same credentials. If those also fail with error 34, it strongly suggests a fundamental issue with your OAuth setup or tokens.