由以下原因引起:java.lang.IllegalStateException:必须为客户端注册指定提供商 ID 'instagram'

Caused by: java.lang.IllegalStateException: Provider ID must be specified for client registration 'instagram'

如何在 spring 中为 instagramm 创建 Oauth2 注册。我尝试这样做,但出现错误,我为 Facebook 和 google 注册了 oauth2,但在 Instagram 上它不起作用,我找不到任何教程。这是我的 application.yaml:

 security:
    oauth2:
      client:
        registration:
          instagram:
            client-id: 6833951273265217
            client-secret: 398ec124b13c38ea175ded5badb117a2
            redirectUri: "{baseUrl}/oauth2/callback/{registrationId}"
            scope:
              - email
              - public_profile

应用程序启动时出现此错误:

Caused by: java.lang.IllegalStateException: Provider ID must be specified for client registration 'instagram'
    at org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientPropertiesRegistrationAdapter.getBuilder(OAuth2ClientPropertiesRegistrationAdapter.java:95) ~[spring-boot-autoconfigure-2.4.4.jar:2.4.4]
    at org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientPropertiesRegistrationAdapter.getClientRegistration(OAuth2ClientPropertiesRegistrationAdapter.java:61) ~[spring-boot-autoconfigure-2.4.4.jar:2.4.4]
    at org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientPropertiesRegistrationAdapter.lambda$getClientRegistrations[=13=](OAuth2ClientPropertiesRegistrationAdapter.java:53) ~[spring-boot-autoconfigure-2.4.4.jar:2.4.4]
    at java.base/java.util.HashMap.forEach(HashMap.java:1336) ~[na:na]
    at org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientPropertiesRegistrationAdapter.getClientRegistrations(OAuth2ClientPropertiesRegistrationAdapter.java:52) ~[spring-boot-autoconfigure-2.4.4.jar:2.4.4]
    at org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientRegistrationRepositoryConfiguration.clientRegistrationRepository(OAuth2ClientRegistrationRepositoryConfiguration.java:49) ~[spring-boot-autoconfigure-2.4.4.jar:2.4.4]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.5.jar:5.3.5]
    ... 124 common frames omitted

Instagram 不是 spring-security 开箱即用支持的常见 OAuth2 提供程序(请参阅 this)。因此您必须自己配置其配置:

 security:
    oauth2:
      client:
        registration:
          instagram:
            client-id: 6833951273265217
            client-secret: 398ec124b13c38ea175ded5badb117a2
            redirectUri: "{baseUrl}/oauth2/callback/{registrationId}"
            scope:
              - email
              - public_profile
        provider:
          instagram:
            authorization-uri: https://api.instagram.com/oauth/authorize
            token-uri: https://api.instagram.com/oauth/access_token