OAuth
モジュールは、
GeneXus コアモジュールの一部として配布され、 OAuth プロトコルを操作できるようにします。このモジュールの最初のバージョンは、承認コードフローに基づいています。
異なる役割によって実行される 2つのステップがあります。
開発者は、有効なアクセストークンを受け取るために、管理者に 3つの情報 (クライアント ID、クライアントシークレット、更新トークン) をパラメーターとして渡すように依頼する必要があります。
以下のサンプルで示すように、これらのパラメーターは、RefreshToken メソッドに特別に渡す必要があります。このメソッドは、API 呼び出しを実行して、アクセストークンを更新します。
RefreshToken プロシージャーの
Parm ルールには、次のパラメーターが含まれます。
- (in) OAuthAuthorizationConfig: SDT
- (in) RefreshToken: String
- (out) OAuthAccessToken: Oauth20AccessTokenSDT
- (out) DateTimeTokenExpire: Datetime
- (out) OutMessages: Messages
- (out) Success: Boolean
1.OAuthAuthorizationConfig の SDT 構造は次のとおりです:
最初のメンバーは ID プロバイダー (IdP) を参照します。たとえば、Google、Microsoft、GAM です。このフィールドに入力するために、最も一般的な IdP のいくつかを含むモジュール内で、"AccessTokenProvider"という名前の
列挙ドメインが提供されます。
2番目と 3番目のメンバーには、管理者から提供されたクライアント ID とクライアントシークレットデータを入力する必要があります。
2.RefreshToken パラメーターは、管理者によって指定された更新トークンである必要があります。
3.要求されたアクセストークンを含む OAuthAccessToken SDT が返されます。次の画像はその構造を示しています。
4.受信したアクセストークンの有効期限が切れる日時を含む DateTimeTokenExpireパラメーターが返されます。
5.Success パラメーターが true の場合、OutMessages パラメーターは空の文字列を返します。一方、問題の説明が含まれます。
6.out Successパラメーターは、要求が成功したかどうかを通知します。
&OAuthAuthorizationConfig.AccessTokenUrl = OAuth.v2.AccessTokenProvider.Google //https://oauth2.googleapis.com/token &OAuthAuthorizationConfig.ClientId = "ClientId" &OAuthAuthorizationConfig.ClientSecret = "SecretKey" &Success = OAuth.v2.RefreshToken(&OAuthAuthorizationConfig, REFRESH_TOKEN, &OAuthAccessToken, &DateTimeTokenExpire, &Messages) if (&Success) &AccessTokenString = &OAuthAccessToken.access_token else Log.Error(&Messages) endif
上記は、Oauth を使用して Gmail でメッセージを送信することとどのように関連しているのでしょうか?
&OAuthAuthorizationConfig.AccessTokenUrl = OAuth.v2.AccessTokenProvider.Google //https://oauth2.googleapis.com/token &OAuthAuthorizationConfig.ClientId = "ClientId" &OAuthAuthorizationConfig.ClientSecret = "SecretKey" for each User where UserID = &UserId &OAuthAccessToken.FromJSON(UserAccessToken) //トークン再利用の場合のオプションです。For Token reuse &Success = OAuth.v2.RefreshToken(&OAuthAuthorizationConfig, REFRESH_TOKEN, &OAuthAccessToken, &DateTimeTokenExpire, &Messages) if (NOT &Success) Log.Error(&Messages) return endif UpdateAccessToken(UserId, &OAuthAccessToken) //トークン再利用の場合のオプションです。For Token reuse &AccessTokenString = &OAuthAccessToken.access_token &SMTPSession.Host = 'smtp.gmail.com' &SMTPSession.Port = 465 &SMTPSession.Timeout = 20 &SMTPSession.Secure = 1 &SMTPSession.Authentication = 1 &SMTPSession.UserName = 'Info@gmail.com' &SMTPSession.Password = &AccessTokenString &SMTPSession.AuthenticationMethod = "XOAUTH2" &SMTPSession.Login() &MailMessage.Subject="Email Subject XXX" //&MailMessageはMailMessage データタイプに基づいています。 &MailMessage.Text="Message body" &MailRecipient.Address = "xxx@gmail.com" //&MailRecipient は、MailRecipient データタイプに基づいています。 &MailRecipient.Name = "xxx" &MailMessage.To.Add(&MailRecipient) &SMTPSession.Send(&MailMessage) endfor
GeneXus 17 Upgrade 9 以降。
E メール用のMicrosoft Exchange OAuth 2.0: 管理者による生成とデータ収集 E メール用の Google OAuth 2.0 プロセス: 管理者による生成とデータ収集