是的,可以在沒有回調URL的情況下使用OAuth2。 RFC6749介紹了幾種流程。隱式流程(現已棄用[1])和授權碼流程(Authorization Code)需要重定向URI。然而,資源所有者密碼憑證流程(也已棄用[1])不需要。
自RFC6749發(fā)布以來,還發(fā)布了其他規(guī)范,這些規(guī)范不需要任何重定向URI:
此外,使用OpenID Connect時,響應模式不一定是重定向到redirect_uri
參數,而可以是對該端點的POST請求。有關詳細信息,請參閱OAuth 2.0表單POST響應模式規(guī)范。
無論如何,如果上述授權類型不適合您的需求,您可以創(chuàng)建一個自定義授權類型。
并不完全準確,OAuth流程的整個重點在于用戶(你代表其訪問數據的客戶端)需要給予你訪問他們數據的權限。
請參閱身份驗證說明。你需要將用戶發(fā)送到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>
發(fā)送POST請求來交換訪問令牌,并提供以下POST參數:
client_secret=<your_secret> code=<auth_code_you_just_got> redirect_uri=<same_redirect_uri_as_before> grant_type=authorization_code
這將返回一個訪問令牌,然后你可以使用該訪問令牌來訪問用戶賬戶上的數據。你不需要將訪問令牌提供給用戶,它是供你使用以訪問用戶賬戶的。無需輪詢或其他操作。
如果你只是訪問自己的賬戶,可以使用應用程序設置頁面提供的訪問令牌。否則,除非設置自己的重定向服務器,否則無法為用戶獲取訪問令牌(除非所有用戶都屬于同一組,即同一賬戶下的多個用戶;但我不會深入討論這個)。SurveyMonkey需要一個地方來發(fā)送授權碼給你,你不能只是請求一個。