小编Jon*_*son的帖子

从用户访问令牌获取应用程序ID(或验证源应用程序是否有令牌)

我找到了这个问题,它有一个答案,但从那时起facebook改变了令牌格式,现在它是这样的:

AAACEdEose0cBACgUMGMCRi9qVbqO3u7mdATQzg[more funny letters]ig8b3uss9WrhGZBYjr20rnJu263BAZDZD
Run Code Online (Sandbox Code Playgroud)

简而言之,你无法从中推断出任何东西.我还找到了访问令牌调试器,它显示了我正在寻找的信息,如果你粘贴一个令牌,这很好,但不能帮助我以编程方式进行.

重点是,如果有人为用户获取令牌,他可以使用它来访问图表,这就是我在我的应用程序中所做的事情 - 我想确保人们转发我的应用程序发给他们的令牌,而不是另一个.

我的申请流程是:

  1. 从Facebook获取访问令牌(没有什么特别的,就像在这里描述的那样,服务器端流.(也是iPhone和Android和使用,但如果我没记错的话他们有类似的流程))
    [设备] < - > [facebook ]
  2. 使用该访问令牌,设备将使用令牌
    [device] < - > [Jonathan的应用程序] 访问我的应用程序服务器
    在我的服务器上,我将访问令牌附加到用户并使用它来为我的应用程序中的该用户授予权限.(使用facebook连接验证用户)


我的应用程序是安全的,无论facebook如何,访问完成也都经过身份验证,但是!在这个流程中,我发现的弱链接是我无法验证我获得的访问令牌是否已经为我的应用程序签名 - 我不喜欢它,因为我将令牌缓存用于离线使用,我希望100%确定它们是我的应用程序,具有我的权限.

那么验证我获得的令牌与我的应用程序相关的(最佳)方式是什么(与用户的关系,我使用令牌来访问/我并查看此令牌用于哪个用户)

我不需要解密令牌(我猜它是某种AES),我只是在找一个会告诉我令牌与我的应用程序ID匹配的端点.

(编辑:使用C#SDK,如果重要..但是图形/休息调用以提供该信息同样好:))

facebook oauth-2.0 facebook-c#-sdk facebook-oauth

59
推荐指数
3
解决办法
3万
查看次数

使用Knex.js的select语句的子查询

我正在尝试使用Knex使用子查询创建以下查询:

SELECT 
  t.*, 
  (SELECT COUNT(*) FROM team_users tu WHERE TeamID = t.ID) AS UserCount,
  (SELECT COUNT(*) FROM team_access ta WHERE TeamID = t.ID) AS AppCount
FROM teams t WHERE OwnerUserID = _UserID;
Run Code Online (Sandbox Code Playgroud)

结果应该是team表,其中包含来自不同表的UserCount和AppCount的计数聚合(team_users,team_access)

id | Name      | OwnerUserID   | UserCount | AppCount
-----------------------------------------------------
134| Team A    | 1538          | 7         | 6
135| Team B    | 1538          | 4         | 2
136| Team C    | 1538          | 12        | 1
Run Code Online (Sandbox Code Playgroud)

我认为是一个等效的knex实现是:

var subquery1 = Knex.knex('team_users').count('*').where('TeamID', 'teams.ID').as('UserCount');
var subquery2 = Knex.knex('team_access').count('*').where('TeamID', …
Run Code Online (Sandbox Code Playgroud)

javascript mysql sql-server node.js knex.js

6
推荐指数
1
解决办法
5866
查看次数