簡體   English   中英

Soundcloud API 身份驗證總是拋出“401 - 未經授權”

[英]Soundcloud API authentication always throws “401 - Unauthorized”

由於 Soundcloud API 的新更新,我正在嘗試更新我的代碼中的身份驗證流程(該項目使用的是 login 和 password )。

但是我被一個問題擋住了,我正在失去理智。

我按照此頁面上的說明進行操作: https : //developers.soundcloud.com/blog/security-updates-api

我設法獲得了一個刷新令牌和一個訪問令牌:

curl --request POST \
--url https://api.soundcloud.com/oauth2/token \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data client_id=CLIENT_ID \
--data client_secret=CLIENT_SECRET \
--data grant_type=client_credentials

但是我無法使用我在上一個請求中獲得的訪問令牌執行此請求,這是提到的頁面中的一個示例:

curl --request GET \
--url 'https://api.soundcloud.com/me/tracks?limit=1' \
--header 'Authorization: OAuth ACCESS_TOKEN'

請求響應始終為: {"code":401,"message":"","link":"https://developers.soundcloud.com/docs/api/explorer/open-api","status":"401 - Unauthorized","errors":[],"error":null}

我嘗試刷新我的訪問令牌,並使用網址“https://api.soundcloud.com/me”而不是“https://api.soundcloud.com/me/tracks?limit=1”。 並且總是返回相同的錯誤。

有人能幫我嗎 ?

提前致謝,感謝閱讀。

好的,我想我明白了,感謝 github 上的這個問題: https : //github.com/soundcloud/api/issues/76

“client_credentials 身份驗證流程僅用於服務器端集成,並且僅允許訪問公共端點。這意味着對於端點 /me 或任何其他與用戶相關的端點,您必須使用提供客戶端集成的授權代碼流。 ”

在這里:https ://developers.soundcloud.com/docs/api/guide#authentication :“如果您的應用程序只需要訪問公共資源,您可以使用 OAuth 客戶端憑據流”

我已經解決了太模糊的錯誤信息……而且我閱讀速度太快了!

稍后我會在評論中添加正確的身份驗證方法。

更新:“手動”身份驗證流程

由於該項目位於 VPN 之后,我無法使用正常的身份驗證流程( soundcloud 無法調用 redirect_uri !)

所以 :

  1. 獲取“代碼”

    首先,使用您要訪問的帳戶在 SoundCloud 上進行身份驗證(或要求您的客戶這樣做)

    在您的瀏覽器中,輸入以下網址:

    https://api.soundcloud.com/connect?client_id=YOUR_CLIENT_ID&response_type=code&scope=&state=[random_string]&redirect_uri=YOUR_REDIRECT_URI

    接受請求,這會將您重定向到包含代碼的 URL:code=YOUR_CODE。 收下。 如果這是由您的客戶完成的,只需讓他復制粘貼網址即可。 這不是很安全,但如果您的重定向 uri 無法從 Soundcloud 訪問,您就無法避免它。

  2. 獲取刷新令牌和訪問令牌:

    使用 curl,可以保持您的客戶端秘密或應用程序秘密(實際上 :D )。 還有訪問令牌。

    curl -X POST "https://api.soundcloud.com/oauth2/token"
    -H“接受:應用程序/json;字符集=utf-8”
    -H "內容類型:應用程序/x-www-form-urlencoded"
    -d "grant_type=authorization_code&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&redirect_uri=YOUR_REDIRECT_URI&code=YOUR_CODE"

最后一個請求將以 json 格式回答。 在里面,您會找到一個訪問令牌和一個刷新令牌。 在您的項目中注冊刷新令牌以在需要時重用它來刷新您的訪問令牌!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM