RFC 6749、4.3.2 より。アクセストークンリクエスト:
The authorization server MUST:
o require client authentication for confidential clients or for any
client that was issued client credentials (or with other
authentication requirements),
そのため、クライアント アプリケーションのクライアント タイプ (RFC 6749, 2.1. Client Types ) が公開されている (そしてクライアントにクライアント シークレットが発行されていない) 場合、トークン要求にクライアント シークレットを含める必要はありません。つまり、認可サーバーにクライアントシークレットを提示することなく、アクセストークンを取得できます。この場合、クライアント シークレットをクライアント アプリケーションに埋め込むことを避けることができます。
一方、クライアント アプリケーションのクライアント タイプが機密である場合、クライアント アプリケーションはスマートフォンに配信されるべきではありません。
クライアント タイプをパブリックまたはコンフィデンシャルに設定する方法は、使用している認可サーバーの実装によって異なります。一部の実装では、公開または機密を選択するための明示的なトグル ボタンが用意されています。他のアプリケーションはそのような明示的なオプションを提供せず、クライアント アプリケーションのクライアント タイプは暗黙的に決定されます。たとえば、認可サーバーが提供する構成ページで Android アプリケーションを選択すると、クライアント タイプがパブリックになります。
ただし、一部の認可サーバーの実装では、クライアントの種類がパブリックか機密かに関係なく、常にクライアント シークレットが必要になる場合があることに注意してください。