小工具OAuth2授权

时间:2014-08-11 12:01:56

标签: oauth oauth-2.0 google-calendar-api google-gadget google-tasks-api

我正在开发一个小工具(html, JS)以在内部运行(Google Calendar page)。 我需要在那里显示用户的任务,因此我需要与Google Task Api建立连接。 我需要使用OAuth2授权和以下请求:

GET https://www.googleapis.com/tasks/v1/users/@me/lists 
GET https://www.googleapis.com/tasks/v1/lists/tasklist/tasks

很遗憾,我已获得t found description or samples for gadgets with OAuth2`授权。

您能否告诉我OAuth2部分在这种情况下会是什么样的?

 <OAuth2>
   <Service name="[service_name]">
      <Authorization url="https://.../authorize"/>
      <Token url="https://.../oauth2/token"/>
   </Service>
 </OAuth2>

您能否批准此代码以获取请求? (JS)

 function loadContents(){           
   var url = "https://www.googleapis.com/tasks/v1/users/@me/lists?alt=json";            
   var params = {};
   params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
    params[gadgets.io.RequestParameters.AUTHORIZATION]=gadgets.io.AuthorizationType.OAUTH2;
   params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;     
   params[gadgets.io.RequestParameters.OAUTH_SERVICE_NAME] ="[service_name]";       
   var callback = function (response) { 
     if (response.oauthApprovalUrl) {
       ...                 
     }                      
   };             
   gadgets.io.makeRequest(url, callback, params);
 }                  

2 个答案:

答案 0 :(得分:1)

Gadgets API框架不支持OAuth2。但是,Tasks API确实支持OAuth1,因此您仍然可以使工作正常。

答案 1 :(得分:1)

答案是 - 使用OAuth而不是OAuth 2.0。

OAuth部分应为:

 <OAuth>
      <Service name="google">
        <Access url="https://www.google.com/accounts/OAuthGetAccessToken" method="GET" /> 
        <Request url="https://www.google.com/accounts/OAuthGetRequestToken?scope=https://www.googleapis.com/auth/tasks" method="GET" /> 
        <Authorization url="https://www.google.com/accounts/OAuthAuthorizeToken?oauth_callback=http://oauth.gmodules.com/gadgets/oauthcallback" /> 
      </Service>
    </OAuth>

请求为[JS]

 var params = {};
 url = "https://www.googleapis.com/tasks/v1/users/@me/lists?key=YOUR_API_KEY";
      params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
      params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.OAUTH;
      params[gadgets.io.RequestParameters.OAUTH_SERVICE_NAME] = "google";
      params[gadgets.io.RequestParameters.OAUTH_USE_TOKEN] = "always";
      params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;

要将OAuth1用于Google Tasks API,我们需要一个 API key