如何在不使用对话框的情况下为 Microsoft Bot 框架生成 OAUTH link?

How to generate OAUTH link for Microsoft Bot framework without using dialogs?

我正在尝试创建一个登录卡,以便与卡交互的人被重定向到登录页面,然后令牌用于其他目的(如获取信息等)。

class SignInGeneratorService:
def __init__(self, APP_ID, APP_PASSWORD):
    SETTINGS = BotFrameworkAdapterSettings(APP_ID, APP_PASSWORD)
    self.ADAPTER = BotFrameworkAdapter(SETTINGS)
    activity = Activity()
    self.turn_context = TurnContext(self.ADAPTER, activity)

async def generate_raw_link(self):
    return await self.ADAPTER.get_oauth_sign_in_link(self.turn_context, "ADAuth")

这是我最初尝试获取登录 link 的方法,但它似乎不起作用(可能是因为我们使用的是虚拟转弯上下文对象)。关于如何在不使用对话框的情况下执行相同操作的任何想法?

除非我误解了你的问题,否则我认为你可以使用“登录”卡来实现这一点。 06.using-cards sample demonstrates how to set up the card. And, visiting the BotFramework-WebChat repo, you can test this using the 01.getting-started/a.full-bundle 演示。只需输入“登录”一词,卡片就会显示出来。单击该按钮会将您带到一个页面以登录 Microsoft 的 live.com 站点。

您只需更新 URL,使其指向您选择或设计的服务,让您获得任何必要的信息。

希望得到帮助!

分享对我有用的东西。我必须通过 MicrosoftAppCredentials 并使用我之前使用 Microsoft 登录 API 创建的不记名令牌设置机器人身份(需要客户端 ID 和密钥来生成它)。在此之后,我能够创建一个登录 URL,可以将其传递以供进一步使用。

    identity = await self.ADAPTER._authenticate_request(self.activity,
                                                        "Bearer *bearerToken*")
    self.app_credentials = MicrosoftAppCredentials(APP_ID, APP_PASSWORD)
    self.turn_context.turn_state[BotAdapter.BOT_IDENTITY_KEY] = identity
    sign_in_resource = await self.ADAPTER.get_oauth_sign_in_link(self.turn_context, "ADAuth", None, self.app_credentials)