2017-09-14 8 views
0

oAuthを使用してSalesforceにGoogleドライブ統合を作成することができました。しかし、私の問題は、アプリがGoogleにログインするようにユーザーをリダイレクトすることです。私はプログラムでログインして、すべてのユーザーが同じGoogleドライブユーザーとして自動的にログインするようにします。これを行う唯一の方法は、Googleドライブのサービスアカウントを使用することだと思います。ドキュメントを見ている以外は、Apexでこれを設定する方法はわかりません。ここでのJavaを示しドキュメントされていますGoogleドライブとSalesforceとの統合サービスアカウントを使用

https://developers.google.com/identity/protocols/OAuth2ServiceAccount#authorizingrequests

ここでは、OAuthのた​​めに動作します(ただし、Googleにログインする必要があります私の認証URIです:

global class cAuthURIForApiReq { 
global String authenticationURI = ''; 

public cAuthURIForApiReq(String clientKey, String redirect_uri) { 
    String key = EncodingUtil.urlEncode(clientKey, 'UTF-8'); 
    String uri = EncodingUtil.urlEncode(redirect_uri, 'UTF-8'); 

    String authuri = 'https://accounts.google.com/o/oauth2/v2/auth?' + 
     'client_id=' + key + 
     '&response_type=code' + 
     '&scope=https://www.googleapis.com/auth/drive' + 
     '&redirect_uri=' + uri + 
     '&state=security_token%3D138r5719ru3e1%26url%3Dhttps://oauth2-login-demo.example.com/myHome' + 
     '&[email protected]' + 
     '&access_type=offline'; 

    authenticationURI = authuri; 
} 

}

そしてへこのメソッドを呼び出すだけで認証できます:

public PageReference driveAuth() { 
    PageReference pg = new PageReference(new cAuthURIForApiReq(key, redirect_uri).authenticationURI); 
    return pg; 
} 

誰でもログインするようにGoogleにリダイレクトせずにプログラムで認証する方法を知っていますか?

答えて

0

名前付き資格情報を作成すると、IDタイプというフィールドがあります。 名前付きプリンシパルを選択します。次に、Googleのユーザー名/パスワード(または統合のために設定したアカウント)を使用してアプリを認証します。その後、他のすべてのユーザーがあなたと同じ名前の資格情報と対話します。

また、認証プロバイダで名前付き資格情報を使用する代わりに、JWTでサービスアカウント資格を使用するコードを記述することはできません。

関連する問題