- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 Hapi 框架 (nodejs) 和 Bell模块,与 Twitter 提供商合作。
使用 github 页面中给出的示例获得工作代码非常简单。我访问 /login 路线,然后被重定向到 Twitter,在那里我授权该应用程序,然后我被重定向回 /login?oauth_token=xxxxxxx&oauth_verifier=xxxxxxx ,在那里我可以访问 request.auth.credentials 中的用户配置文件。
当我尝试拒绝该应用程序时,问题就出现了。我没有点击 Twitter 上的“登录”按钮,而是点击了“取消”按钮,然后点击了“返回网站名称”按钮。最后一个按钮将我重定向到 /login?denied=xxxxxx,然后我(再次)重定向到 Twitter 以批准该应用。
我尝试使用同一页面中的另一个示例 https://github.com/hapijs/bell#handling-errors 来处理这种情况。但无法让它工作。
server.route({
method: ['GET', 'POST'],
path: '/login',
config: {
auth: {
strategy: 'twitter',
mode: 'try'
},
handler: function (request, reply) {
if (!request.auth.isAuthenticated) {
return reply('Authentication failed due to: ' + request.auth.error.message);
}
return reply.redirect('/home');
}
}
});
似乎在检查 request.auth 之前它会解释/login 路由并重定向到 Twitter。我仍然不太了解 Bell 模块,但 Twitter 策略可能需要 request.params 中的 oauth_token 和 oauth_verifier,但是 策略不会解释拒绝的参数,这就是发生重定向的原因。
有人设法处理这种情况吗?
最佳答案
我找到了解决方法。这不是最佳解决方案,但至少可以让我处理 Twitter 的拒绝。
我必须修改响铃模块内的一个文件。在bell/lib/oauth.js
中,在验证oauth_token
exports.v1 = function (settings) {
var client = new internals.Client(settings);
return function (request, reply) {
var cookie = settings.cookie;
var name = settings.name;
// Sign-in Initialization
// Verify if app (Twitter) was rejected
if (name=='twitter' && request.query.denied) {
return reply(Boom.internal('App was rejected'));
}
if (!request.query.oauth_token) {
// Obtain temporary OAuth credentials
var oauth_callback = request.server.location(request.path, request);
通过这一更改,我可以在处理程序中捕获并显示身份验证错误,而无需自动重定向。
至少这是我设法让它发挥作用的方式。此修改的缺点是,如果更新了响铃模块,则修改会丢失并且错误会再次出现,除非更新的模块已经对此进行了修复。所以,你必须留意这一点。
这是 Github issue 的链接我在贝尔存储库上创建了有关此错误的信息。
关于node.js - 将 Hapijs 和 Bell 与 Twitter 提供商一起使用。如何使用 Bell 模块处理 Twitter 的授权拒绝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25966130/
我正在使用 Hapi 框架 (nodejs) 和 Bell模块,与 Twitter 提供商合作。 使用 github 页面中给出的示例获得工作代码非常简单。我访问 /login 路线,然后被重定向到
我想让一个 python 程序在它完成任务时发出哔声来提醒我。目前,我使用 import os 然后使用命令行语音程序说“处理完成”。我宁愿它是一个简单的“铃铛”。 我知道 Cocoa 应用程序中可以
我正在研究密码管理器,它分为几个类。当不满足特定条件时,我希望响铃以通知用户。在一个简单的代码版本中,我使用了很好的旧self.bell()没问题(所有代码都在一个类下-不好,因此是升级版本)。 在升
我正在运行一个长时间运行的自定义 nodejs 脚本,并希望在脚本完成时收到通知。 如何让nodejs触发“系统铃声”? 最佳答案 将 BELL 字符 (Unicode 0007) 输出到标准输出。
我有一个字体很棒的铃铛,我正在尝试让铃铛出现在铃铛的右上角。这是我想要在 Paint.NET 中制作的示例 https://gyazo.com/2d74f611e2df81362bc3f2e946f9
我有一个字体很棒的铃铛,我正在尝试让铃铛出现在铃铛的右上角。这是我想要在 Paint.NET 中制作的示例 https://gyazo.com/2d74f611e2df81362bc3f2e946f9
Highcharts.chart('container', { title: { text: null }, legend: { enabled: false }, xAxis: [{
给定这个值列表: print samples [5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5, 10.0] 我需要为长度为 n 的新数组生成 n 个
我想按钟声顺序生成正态分布。我使用此代码生成数字: import numpy as np mu,sigma,n = 0.,1.,1000 def normal(x,mu,sigma): ret
我使用番茄工作法来管理我的时间,所以我用 perl 编写了这个短计时器。然而,因为我和其他人一起工作,所以当时间用完时我不能使用铃声,而且由于计时器通常在我工作的窗口后面的背景中,我看不到它何时结束。
Symbian belle 和 Symbian Anna 有什么区别?它只是 Symbian ^3 的小更新还是全新的操作系统? 最佳答案 Belle 提供了 6 个主屏幕,而 Symbian 以前的
我正在尝试为 Hapi.js 项目设置 google auth,但我不明白为什么登录后会出现重定向循环回到我的登录路由。 仅当用户尚未登录其 Google 帐户或尚未授予应用访问其信息的权限时,才会发
我读这本书是为了自学 C#。但是,我遇到了一个我无法找到解决方法的问题。 问题问我:编写一段程序来记住该值并将它们作为一个类进行比较。此类具有方法 NewValue 以及属性 LowestValue
我正在开发一个 asp.net 核心 Web 应用程序,我们的系统有很多功能可以将项目分配给注册用户,我想通过实现类似贝尔的通知(这是已被许多社交媒体网站使用),如下所示:- 现在,在这个阶段,我试图
我一直在到处寻找这个问题的可能解决方案,但似乎无法提出任何特别的建议。从修改我的回调到 Hapi 中的各种其他修补,我无法得到在 Angular 端解决的 promise 。奇怪的是,Twitter
我不熟悉 Hapi 身份验证并尝试使用 this连接到 Twitter API 的教程,如教程中所述,要使代码正常工作,您必须从 Twitter 应用程序复制消费者 key 和消费者 secret ,
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
我已经创建了类似警报通知的应用程序,所有这些都立即正常工作,但过了一段时间我发现了这样的错误无法启动应用程序 com.bell.ship 的时钟/10024 用于广播 Intent:logcat 中的
我想在一组句子上训练 NgramModel,使用 Witten-Bell 平滑来估计看不见的 ngram,然后用它来获得由该分布生成的测试集的对数似然。我想做与此处文档示例几乎相同的事情:http:/
测试用例程序: #include #define SIZE 1024 int main(int args,char *argv[]){ char buf[SIZE]; fgets(buf,
我是一名优秀的程序员,十分优秀!