Spring boot 如何将Spring Boot与Spotify OAuth 2身份验证集成

Spring boot 如何将Spring Boot与Spotify OAuth 2身份验证集成,spring-boot,spotify,spring-security-oauth2,spring-oauth2,Spring Boot,Spotify,Spring Security Oauth2,Spring Oauth2,我是spring boot和spring security的新手。所以我从一些教程开始。现在,我想在示例应用程序中集成oauth身份验证和spotify 我已经为我介绍了来自的spring boot oauth 2教程。将解释如何将oauth与facebook和github集成。我将application.yml定制为spotify配置,但它不起作用 application.yml security: oauth2: client: clientId: <my-cl

我是spring boot和spring security的新手。所以我从一些教程开始。现在,我想在示例应用程序中集成oauth身份验证和spotify

我已经为我介绍了来自的spring boot oauth 2教程。将解释如何将oauth与facebook和github集成。我将application.yml定制为spotify配置,但它不起作用

application.yml

security:
  oauth2:
    client:
      clientId: <my-client-id>
      clientSecret: <my-secret>
      accessTokenUri: https://accounts.spotify.com/api/token
      userAuthorizationUri: https://accounts.spotify.com/authorize
      tokenName: oauth_token
      authenticationScheme: query
      clientAuthenticationScheme: form
      scope: user-read-private, user-read-email
    resource:
      userInfoUri: https://api.spotify.com/v1/me
/参考资料/static/index.html


演示
演示
使用Spotify:
以以下身份登录:
注销
$.get(“/user”,函数(数据){
$(“#user”).html(data.userAuthentication.details.name);
$(“.unauthenticated”).hide()
$(“.authenticated”).show()
});
var logout=函数(){
$.post(“/logout”,函数(){
$(“#user”).html(“”);
$(“.unauthenticated”).show();
$(“.authenticated”).hide();
});
返回true;
}
$.ajaxSetup({
发送前:功能(xhr、设置){
如果(settings.type='POST'| | settings.type=='PUT'
||settings.type=='DELETE'){
如果(!(/^http:../.test(settings.url)|/^https:*/
.test(settings.url))){
//仅将令牌发送到相对URL,即本地。
xhr.setRequestHeader(“X-XSRF-TOKEN”,
Cookies.get('XSRF-TOKEN');
}
}
}
});
格雷德尔先生

plugins {
    id 'org.springframework.boot' version '2.1.5.RELEASE'
    id 'java'
}

apply plugin: 'io.spring.dependency-management'

group = 'sh.stern'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.springframework.security:spring-security-test'

    compile group: 'org.springframework.security.oauth.boot', name: 'spring-security-oauth2-autoconfigure', version: '2.1.5.RELEASE'
    compile group: 'org.webjars', name: 'jquery', version: '3.4.1'
    compile group: 'org.webjars', name: 'js-cookie', version: '2.1.0'
    compile group: 'org.webjars', name: 'bootstrap', version: '4.3.1'
    compile group: 'org.webjars', name: 'webjars-locator-core', version: '0.37'
}

如果我启动应用程序并在localhost:8080上打开web应用程序,我会被重定向到spotify。我正在登录我的spotify帐户,并被重定向到我的应用程序,但重定向后,我出现以下错误:

2019-05-24 23:00:17.564  WARN 55176 --- [io-8080-exec-10] o.s.b.a.s.o.r.UserInfoTokenServices      : Could not fetch user details: class org.springframework.web.client.HttpClientErrorException$Unauthorized, 401 Unauthorized

我是否错误配置了application.yml?

我可以找到问题,application.yml配置错误。似乎这个名字是错的。我删除了这个属性,现在它可以工作了

现在的配置如下所示:

security:
  oauth2:
    client:
      clientId: <my-client-id>
      clientSecret: <my-client-secret>
      accessTokenUri: https://accounts.spotify.com/api/token
      userAuthorizationUri: https://accounts.spotify.com/authorize
      authenticationScheme: query
      clientAuthenticationScheme: form
      scope: user-read-private, user-read-email
    resource:
      userInfoUri: https://api.spotify.com/v1/me
安全性:
oauth2:
客户:
客户ID:
客户机密:
accessTokenUri:https://accounts.spotify.com/api/token
userAuthorizationUri:https://accounts.spotify.com/authorize
authenticationScheme:查询
clientAuthenticationScheme:表单
范围:用户阅读私人,用户阅读电子邮件
资源:
用户信息URI:https://api.spotify.com/v1/me