【发布时间】:2021-06-03 12:42:33
【问题描述】:
我正在尝试构建一个 azure 函数,以便从 Autodesk forge api 获取一些数据并放入集中式数据仓库。当我在本地测试所有内容时,它正在工作并更新我的表,但是当我将其部署为天蓝色的函数时,我在尝试使用 3 腿令牌时遇到了身份验证问题。
我正在使用这个 python 包装器:https://github.com/lfparis/forge-python-wrapper/tree/75868b11a3d8bac4b65f66b905c2313a35ba5711/forge
当我在本地运行时,身份验证工作正常,并且我获得了访问令牌等。但是,在 azure 上运行时,它不会被带到我的回调 url,而是将我定向到 https://auth.autodesk.com/as/NH3Mc/resume/as/authorization.ping?opentoken=..。因此在 url 中没有要提取的访问令牌。你知道我为什么会被重定向到这里吗?
这是处理三足身份验证的代码部分
"""https://forge.autodesk.com/en/docs/oauth/v2/reference/http/authorize-GET/""" # noqa:E501
url = "{}/authorize".format(AUTH_V1_URL)
params = {
"redirect_uri": self.redirect_uri,
"client_id": self.client_id,
"scope": " ".join(self.scopes),
"response_type": response_type,
}
url = self._compose_url(url, params)
logger.info('Start url: %s', url)
chrome_driver_path = os.environ.get("CHROMEDRIVER_PATH")
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--log-level=3")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--no-sandbox")
google_chrome_path = os.environ.get("GOOGLE_CHROME_BIN")
if google_chrome_path:
chrome_options.binary_location = google_chrome_path
try:
driver = Chrome(
executable_path=chrome_driver_path,
chrome_options=chrome_options,
)
except (TypeError, WebDriverException):
chrome_driver_path = chromedriver_autoinstaller.install()
driver = Chrome(
executable_path=chrome_driver_path,
chrome_options=chrome_options,
)
try:
driver.implicitly_wait(15)
driver.get(url)
logger.info('Start driver url: %s', driver.current_url)
user_name = driver.find_element(by=By.ID, value="userName")
logger.info('Username: %s', self.username)
user_name.send_keys(self.username)
verify_user_btn = driver.find_element(
by=By.ID, value="verify_user_btn"
)
verify_user_btn.click()
logger.info('After first click url: %s', driver.current_url)
pwd = driver.find_element(by=By.ID, value="password")
logger.info('pwd: %s', self.password)
pwd.send_keys(self.password)
submit_btn = driver.find_element(by=By.ID, value="btnSubmit")
submit_btn.click()
logger.info('After Password url: %s', driver.current_url)
allow_btn = driver.find_element(by=By.ID, value="allow_btn")
allow_btn.click()
driver.implicitly_wait(15)
logger.info('Driver url: %s', driver.current_url)
return_url = driver.current_url
driver.quit()
except Exception as e:
self.logger.error(
"Please provide the correct user information."
+ "\n\nException: {}".format(e)
)
"chrome://settings/help"
"https://chromedriver.chromium.org/downloads"
sys.exit()
logger.info("Return url %s", return_url)
params = self._decompose_url(return_url)
logger.info("Returns params from Auth: %s", params)
self.__dict__.update(params)```
【问题讨论】:
标签: python azure autodesk-forge