API проверки сайта Google

Я пытаюсь разработать систему проверки сайта Google с использованием ASP.Net. Также с помощью проводника Google ( https://developers.google.com/site-verification/v1/webResource/insert) протестируйте метод запроса, такой как формат запроса JSON и HTTP.

Это то, что я отправляю в Google.

POST https://www.googleapis.com/siteVerification/v1/webResource?verificationMethod=site&key={YOUR_API_KEY}

Content-Type:  application/json
Authorization:  Bearer xxxxxxxxxxxxxxx
X-JavaScript-User-Agent:  Google APIs Explorer

{
 "id": "myid",
 "owners": [
  "development@gmail.com"
 ],
 "site": {
  "type": "site",
  "identifier": "http://www.example.net/"
 }
}

Я получаю следующий ответ от Google.

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "backendError",
    "message": "Backend Error"
   }
  ],
  "code": 503,
  "message": "Backend Error"
 }
}

>

IAuthorizationState authorization;        
    protected void Page_Load(object sender, EventArgs e)
    {
        if (googleClient != null)
        {                                
            if (IsPostBack)
            {                    
                authorization = googleClient.ProcessUserAuthorization();
                if (authorization != null)
                {
                    this.AccessToken = authorization.AccessToken;

                }
                else if (this.AccessToken == null)
                {
                    googleClient.RequestUserAuthorization(scope: new[] { GoogleClient.Scopes.WebMaster.SiteVerification });
                }
            }                               
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
          if (authorization != null)
          {
              IOWebMasterInsertGraph webMasterInsertGraph = googleClient.RequestForVerification(authorization);               

          }
    }

public IOWebMasterInsertGraph RequestForVerification(IAuthorizationState authState)
        {
            if ((authState != null) && (authState.AccessToken != null))
            {
                WebRequest request = WebRequest.Create("https://www.googleapis.com/siteVerification/v1/webResource?verificationMethod=site");


                string path = HostingEnvironment.MapPath(@"~/App_Data/GoogleInsert.json");

                MemoryStream ms = new MemoryStream();
                FileStream fileStreem = new FileStream(path, FileMode.Open, FileAccess.Read);
                byte[] bytes = new byte[fileStreem.Length];
                fileStreem.Read(bytes, 0, (int)fileStreem.Length);
                ms.Write(bytes, 0, (int)fileStreem.Length);

                request.ContentType = "application/json";
                request.Method = "POST";
                request.ContentLength = ms.Length;
                ms.Seek(0, SeekOrigin.Begin);
                using (Stream requestStream = request.GetRequestStream())
                {
                    ms.CopyTo(requestStream);
                } 

                WebResponse response = request.GetResponse();

                if (response != null)
                {
                    Stream responseStream = response.GetResponseStream();

                    if (responseStream != null)
                    {
                        //return GoogleGraph.Deserialize(responseStream);
                        return WebMasterInsertGraph.Deserialize(responseStream);
                    }
                }
            }
            return null;
        }

Кто-нибудь знает причину этого?

2 ответа

Решение

Я нашел ответ сам.

Следующее должно быть отправлено в GoogleApi без идентификатора в JSON. Проверочный метос должен быть тем, который вы выбрали при получении токена.

    POST /siteVerification/v1/webResource?verificationMethod=file HTTP/1.1 Host: www.googleapis.com 
    Content-length: 138 
    Content-type: application/json 
    Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 

    {   
       "owners": [
            "sample@gmail.com"   ],     
       "site": {
            "identifier": "http://test.sample.com/",
            "type": "SITE"   } 
    }

Почему вы не используете клиентскую библиотеку Google .NET для проверки сайта? У вас даже есть пример кода для этого. Попробуйте это...

Другие вопросы по тегам