【问题标题】:emails from gmail but response is gmail.readonly来自 gmail 的电子邮件,但回复是 gmail.readonly
【发布时间】:2014-12-12 23:48:59
【问题描述】:

我正在尝试使用https://www.googleapis.com/auth/gmail.readonly/?access_token='fdrt654vfdgfe6545从 gmail 获取电子邮件,但作为回应,我收到了gmail.readonlySystem.HttpResponse[Status=OK, StatusCode=200] 很好。任何人都可以指导我有什么我错过的吗。

这是我请求获得身份验证的方式,但在响应中我收到了访问令牌

<script type="text/javascript">
  (function() {
   var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
   po.src = 'https://apis.google.com/js/client:plusone.js';
   var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
 })();
</script>



  <script type="text/javascript">
      (function() {
           var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
           po.src = 'https://apis.google.com/js/client:plusone.js';
           var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
     })();

     var AuthStates = {google: null};

     function signinCallback(authResult) {
          if (authResult['status']['signed_in']) {                  
            // Update the app to reflect a signed in user
            // Hide the sign-in button now that the user is authorized, for example:
            document.getElementById('signinButton').setAttribute('style', 'display: none');
            //alert(authResult['code']);
            console.log('code state: ' + authResult['code']);
            //console.log('authResult : ' + authResult[]);
            AuthStates.google = authResult;
            console.log('authResult 1 : ' + authResult['status']['method']);
            console.log('auth Result : ' + authResult['id_token']);
            //{!access_token} = authResult['access_token'];
            //{!code} = authResult['code'];
            connection(authResult['access_token'], authResult['code']);
          } else {
            // Update the app to reflect a signed out user
            // Possible error values:
            //   "user_signed_out" - User is signed-out
            //   "access_denied" - User denied access to your app
            //   "immediate_failed" - Could not automatically log in the user
            console.log('Sign-in state: ' + authResult['error']);
          }
        }

  </script>


  <apex:outputPanel >
      <span id="signinButton">
          <span
            class="g-signin"
            data-callback="signinCallback"
            data-clientid="clientid"
            data-cookiepolicy="single_host_origin"                
            data-scope="https://www.googleapis.com/auth/gmail.readonly"
            data-response_type="code"
            data-redirect_uri="http://test-on.ap1.visual.force.com/apex/Gmail_inbox">
          </span>
    </span>
    <apex:form >

所以当我从我的请求中获得访问令牌时,我可以直接去获取与登录用户相关的所有信息。当我获取有关用户的所有信息时,我正在尝试获取与他相关的所有电子邮件。我是在做对还是在任何地方做错。我对 api 和 web 服务非常陌生,正在尝试学习。请帮我出去。

【问题讨论】:

    标签: gmail-api


    【解决方案1】:

    您实际上是在对该 URL (https://www.googleapis.com/auth/gmail.readonly/?access_token= ...) 进行 HTTP GET 调用?这不只是身份验证范围标识符吗?

    一旦您拥有有效的 Oauth2 令牌,您就可以在 Auth 标头中设置,然后您就可以向 API 发出 HTTP 请求。例如,要列出消息,请参阅: https://developers.google.com/gmail/api/v1/reference/users/messages/list

    具有要访问的 URL (GET https://www.googleapis.com/gmail/v1/users/me/messages),然后一旦您获得消息 ID,您就可以单独获取以下消息:https://developers.google.com/gmail/api/v1/reference/users/messages/get(例如 GET https://www.googleapis.com/gmail/v1/users/me/messages/)。

    通常有很好的 Google API 客户端库。不确定这是否适合您,但请参阅,例如: https://developers.google.com/gmail/api/downloads

    【讨论】:

    猜你喜欢
    • 2022-06-18
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 2012-11-22
    相关资源
    最近更新 更多