P粉9491909722023-08-23 18:29:31
是的,可以在沒有回呼URL的情況下使用OAuth2。 RFC6749介紹了幾個流程。隱式流程(現已棄用[1])和授權碼流程(Authorization Code)需要重定向URI。然而,資源擁有者密碼憑證流程(也已棄用[1])不需要。
自RFC6749發布以來,也發布了其他規範,這些規範不需要任何重定向URI:
此外,使用OpenID Connect時,回應模式不一定是重定向到redirect_uri
參數,而可以是對該端點的POST請求。有關詳細信息,請參閱OAuth 2.0表單POST回應模式規格。
無論如何,如果上述授權類型不適合您的需求,您可以建立一個自訂授權類型。
P粉7138664252023-08-23 16:15:15
並不完全準確,OAuth流程的整個重點在於使用者(你代表其存取資料的客戶端)需要給予你存取他們資料的權限。
請參閱身份驗證說明。你需要將使用者傳送到OAuth授權頁面:
https://api.surveymonkey.net/oauth/authorize?api_key<your_key>&client_id=<your_client_id>&response_type=code&redirect_uri=<your_redirect_uri>
這將向使用者顯示一個頁面,告訴他們你正在要求存取他們帳戶的哪些部分(例如查看他們的調查、查看他們的回答等)。一旦使用者透過在該頁面上點擊「授權」來批准,SurveyMonkey將自動跳到你設定為重定向URI的頁面(確保上述URL中的重定向URI與你應用程式設定中設定的相符)並返回授權碼。
因此,如果你的重定向URL是https://example.com/surveymonkey/oauth
,SurveyMonkey將使用授權碼將使用者重定向到該URL:
https://example.com/surveymonkey/oauth?code=<auth_code>
然後,你需要使用該授權碼透過向https://api.surveymonkey.net/oauth/token?api_key=<your_api_key>
發送POST請求來交換存取權杖,並提供以下POST參數:
client_secret=<your_secret> code=<auth_code_you_just_got> redirect_uri=<same_redirect_uri_as_before> grant_type=authorization_code
這將傳回一個存取令牌,然後你可以使用該存取令牌來存取使用者帳戶上的資料。你不需要將存取權杖提供給用戶,它是供你使用以存取用戶帳戶的。無需輪詢或其他操作。
如果你只是存取自己的帳戶,可以使用應用程式設定頁面提供的存取權杖。否則,除非設定自己的重定向伺服器,否則無法為使用者取得存取權杖(除非所有使用者都屬於同一組,即同一帳戶下的多個使用者;但我不會深入討論這個)。 SurveyMonkey需要一個地方來發送授權碼給你,你不能只是請求一個。