2012-09-06 68 views
0

我正在创建一个.NET应用程序,并且在我的一个屏幕上,我有不同的服务来连接使用OAUTH。.NET应用程序中的多个OAUTH提供程序如何处理相同的查询字符串?

两个例子是Facebook和Instagram。我允许用户授权我的应用程序访问这些应用程序。一切工作都很好,但我无法找到一个好方法来知道用户选择哪个提供者(我有一个简单的按钮点击每个服务)回调,因为Facebook和Instagram都返回查询字符串的“代码”。然后用它来完成OAUTH授权的最后一步。

我试图在会话中存储每个服务的按钮点击,但是我的会话正在被重定向到提供程序授权URL并在回调函数中返回到我的应用程序(即使使用重定向(url,false)我的会议仍然被清除)。所以基本上我不知道用户点击了哪个按钮,授权从Facebook或Instagram返回。

在用户验证我的应用程序并进行回调之后需要知道的任何想法或想法如何知道提供程序向我发送的代码后面的回调?

回答

3

你不能让他们去不同的回调网址?他们需要转到相同的网址是否有原因?

+0

为了方便起见,我把它们全部打回我的“连接”页面。这是一个维护页面,您可以设置所有提供商B/C我打算在我的应用程序中提供大量服务。所以如果我能保持相同的回调将是理想的。 –

+0

只需为每个提供商提供传递网址即可。因此,您有\ oauth-callback-facebook和\ oauth-callback-twitter等简单地转发数据以及一个附加参数,说明您从哪个提供商接收回拨。 –

0

您可以在OAuth 2.0授权请求的state parameter(您应该已经用来防止CSRF攻击)中包含此信息。通过附加一个_fb_ig它。

但是,更方便的方法是有不同的回调。

+0

嗯有趣,但我也有同样的问题与twitter和tumblr在授权回调中具有相同的查询字符串参数(oauth_token),并且这些不在2.0上。 –

+0

如果您的OAuth 1提供程序支持在回调URL(例如'https://domain.com/callback?provider = facebook')中返回其他查询参数,或者在用户在重定向到之前单击登录按钮时设置cookie提供者授权端点。 –

+0

查询字符串中的附加参数有窍门!谢谢 –

相关问题