0

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

Это то, что я отправляю в 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": [ 
    "[email protected]" 
], 
"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; 
     } 

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

+0

Можете вложить код? Вы используете клиентскую библиотеку .NET (https://code.google.com/p/google-api-dotnet-client/)? – peleyal

+0

Я пытался использовать клиентскую библиотеку Google .Net. Но там так много версий в совместимости. Я использую DotNetOpenOauth. Но я ошибаюсь с https://developers.google.com/site-verification/v1/webResource/insert. Во всяком случае, я тоже придаю свою кодировку. – Chinthaka

ответ

0

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

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

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

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