Google Indexing API - 403 'Forbidden Response'

时间秒杀一切 提交于 2019-12-10 14:05:04

问题


I am making a call to the google indexing API for job postings:

private $client;
private $httpClient;

public function initClient($kernel)
{
    $this->client = new \Google_Client();
    $this->client->setAuthConfig(JSON_KEY_HERE);
    $this->client->addScope('https://www.googleapis.com/auth/indexing');
    $this->httpClient = $this->client->authorize();
}

public function sendJob()
{
    $endpoint = 'https://indexing.googleapis.com/v3/urlNotifications:publish';
    $content = "{
                    \"url\": \"URL_HERE\",
                    \"type\": \"URL_UPDATED\"
                }";

    $response = $this->httpClient->post($endpoint, array('body' => $content));
}

When making the call to the API, the response given is '403 - Forbidden' .

Any ideas what this error actually means? I have created the service account correctly but cannot replicate success from my dev enviroment.


回答1:


Make sure that you have added the service account as an Owner in Google Search Console as described here: https://developers.google.com/search/apis/indexing-api/v3/prereqs#verify-site.

My problem was that we had multiple entries for the domain in the Search Console (with and without www and with and without https); after adding the service account as an owner to all 4 entries it's working.




回答2:


"Make sure that you have added the service account as an Owner in Google Search Console"

Yep. Use the following code snippet to examine the body response for a more detailed error msg.

    var body = result.Content.ReadAsStringAsync().Result;

if the error msg looks like the following, then this is the same problem.

"message": "Permission denied. Failed to verify the URL ownership."

Worth noting: The new version of the search console is lacking. At the bottom of the left-hand menu is a "go to the old version" link. Click this and then select "verification details" from the gear menu (upper right). Next, click on the link that says "verification details" (seriously!). Here, you will finally see a list of verified owners at the bottom of the page. You can add a new owner here, using the email address of your service account (addr can also be found in your json key file).




回答3:


Adding to @Glennstar's comment and @JMs reply there is no longer the old version link (perhaps I never had the old version) but if you click the 3 vertical dots to the right of user owner '(you)' and select 'manage property owners' then on the next page click each of the 'verification details' links to the right of your domain variations (example.com, http://www.example.com, https://www.example.com etc or whatever you have) and add the owner ie paste in the gserviceaccount.com email address from the json it will then say ownership delegated by current owner to that email address as well.

Once status of that email address had changed from 'full' permission to 'owner' back on the search console page I could then run the call fine and the original 403 error about being unable to verify URL ownership was gone. Thanks guys, would have been clueless without this.



来源:https://stackoverflow.com/questions/51427054/google-indexing-api-403-forbidden-response

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!