2014-10-17 44 views
0

我想從Gmail使用https://www.googleapis.com/auth/gmail.readonly/?access_token='fdrt654vfdgfe6545得到電子郵件但作爲迴應,我得到gmail.readonlySystem.HttpResponse[Status=OK, StatusCode=200]罰款。任何人都可以指導我有什麼我錯過了。來自Gmail的電子郵件,但回覆是gmail.readonly

這個我,我要求如何得到權威性,但在響應我收到訪問令牌

<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 > 

所以,當我從我的請求得到了我的訪問令牌,我可以直接去獲得相關logedin用戶的所有信息。當我收到有關用戶的所有信息時,我試圖獲取與他有關的所有電子郵件。我做對了嗎?或者我錯了任何地方。我非常喜歡嘗試學習的API和Web服務。請幫助我擺脫。

回答

1

你實際上正在對該URL進行HTTP GET調用(https://www.googleapis.com/auth/gmail.readonly/?access_token= ...)?這不僅僅是驗證範圍標識符

一旦你有了一個有效的Oauth2令牌,你可以在Auth頭文件中設置,然後你可以向API發送HTTP請求。例如,要列出的消息看: https://developers.google.com/gmail/api/v1/reference/users/messages/list

即擁有該網址的訪問(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

+0

那麼應該從Gmail提取所有電子郵件的URL,因爲我有access_token。 – Anu 2014-10-18 04:59:44

+0

我更新了我的問題,請幫我解決這個問題。 – Anu 2014-10-18 10:34:25

+0

要獲取可以使用以下網址的郵件列表: https://www.googleapis.com/gmail/v1/users/me/messages/ 但是,http請求也必須包含訪問令牌。請參閱https://developers.google.com/oauthplayground以查看請求和響應的外觀。 – 2014-10-20 17:23:52