2017-11-09 15 views
0

私はジャージーレストによって公開されているGoogleクラウドデータストアを使用しています。残りのAPISにアクセスするためにoauth2を使用して認証しました。appscriptを使用したgmailアドオンのサイドバーのauthorizationUrl

私はGmailのアドオンから安らかなAPIを呼び出して、Gmailのサイドバーにいくつかのお気に入りを設定したいと思っています。

https://github.com/googlesamples/apps-script-oauth2で提供されているoauth2認証を試しました。

Gmailのアドオンを使用してGmailのサイドバーにのを表示する方法を教えてください。

CODEBASE

appscript.json

{ 
    "timeZone": "America/Los_Angeles", 
    "dependencies": { 
    "enabledAdvancedServices": [{ 
     "userSymbol": "Gmail", 
     "serviceId": "gmail", 
     "version": "v1" 
    }], 
    "libraries": [{ 
     "userSymbol": "OAuth2", 
     "libraryId": "1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF", 
     "version": "24", 
     "developmentMode": true 
    }] 
    }, 
    "oauthScopes": ["https://www.googleapis.com/auth/gmail.addons.execute", "https://www.googleapis.com/auth/gmail.addons.current.message.metadata", "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/gmail.readonly", "https://www.googleapis.com/auth/script.external_request", "https://www.googleapis.com/auth/script.storage"], 
    "gmail": { 
    "name": "Gmail Add-on Quickstart", 
    "logoUrl": "https://www.gstatic.com/images/icons/material/system/2x/bookmark_black_24dp.png", 
    "contextualTriggers": [{ 
     "unconditional": { 
     }, 
     "onTriggerFunction": "buildAddOn" 
    }], 
    "primaryColor": "#4285F4", 
    "secondaryColor": "#4285F4", 
    "openLinkUrlPrefixes": ["https://mail.google.com/"], 
    "version": "TRUSTED_TESTER_V2" 
    } 
} 

Code.gs

function buildAddOn(e) { 
    var driveService = createOauthService(); 
    Logger.log('Access'+driveService.hasAccess());  // GETTING FALSE HERE 
    Logger.log('Auth URL'+driveService.getAuthorizationUrl()); // GETTING PROPER AUTH URL. 
    Logger.log('Token'+driveService.getAccessToken()); // NEED TOKEN TO BE USED ON REST CALL 
} 

function createOauthService() { 
    return OAuth2.createService('drive') 
     .setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth') 
     .setTokenUrl('https://accounts.google.com/o/oauth2/token') 
     .setClientId('MY CLOUD CONSOLE CLIENT ID') 
     .setClientSecret('MY SECREAT') 
     .setCallbackFunction('authCallback') 
     .setPropertyStore(PropertiesService.getUserProperties()) 
     .setScope('https://www.googleapis.com/auth/drive') 
     .setParam('login_hint', Session.getActiveUser().getEmail()) 
     .setParam('access_type', 'offline'); 
     .setParam('approval_prompt', 'force'); 
} 

は、この正しい方法ですか私は何かが足りないのですか?

お勧めします。

答えて

0

これを行うための文書化された方法は、承認シーケンスを起動するように構成されたボタンを含むbuildAddOn()関数からカードを返すことです。

function buildAuthorizeCard() { 
    var authorizationUrl = getOAuthService().getAuthorizationUrl(); 
    var card = CardService.newCardBuilder(); 
    var section = CardService.newCardSection(); 
    section.addWidget(CardService.newTextButton() 
      .setText("Authorize MyService") 
      .setAuthorizationAction(
       CardService.newAuthorizationAction() 
        .setAuthorizationUrl(authorizationUrl) 
     )); 
    card.addSection(section); 
    return card.build(); 
} 

これを試すことができます。

関連する問題