StackOverflow 上有很多关于此问题的帖子,但没有一个为 Web 应用程序提供解决方法,以便在嵌入式浏览器(如 iOS 上的 Facebook/Facebook Messenger)中通过 Google Web Auth 登录服务;但我发现 Pinterest 的网络登录与 Google 按钮似乎可以正常工作,所以我想知道是否有人知道如何让它工作。
几年前,Google 禁止从 webview 登录 Google , Auth0 也发表了一篇有关解决方法的博客文章,但这一切似乎都集中在本机应用程序上,而不是提供 Google 作为登录选项的 Web 应用程序。
但我公司的应用程序是一个网络应用程序,我们希望当有人在 Facebook Messenger/Facebook 帖子上分享我们网站的链接时,用户可以使用 Google 登录,即使他们没有弹出本机 Safari 浏览器。根据上述文档,这似乎是不可能的 - 但实际上我发现 Pinterest 的“使用 Google 登录”按钮确实有效!所以看来有一种方法可以让 Google 登录正常工作(不确定他们是否与 Google 达成了特殊协议,或者他们是否正在做我们/Auth0 也可以做的事情)。
重现步骤:
https://community.auth0.com为了证明似乎确实有一种方法可以在野外完成此操作:
当您运行npm test并且失败时,您将获得测试输出+单个错误消息,如下所示:
npm ERR! Test failed. See above for more details.
Run Code Online (Sandbox Code Playgroud)
但是,我创建了一个自定义脚本lint,如下所示:
// package.json
{
// ...
"scripts": {
// ... definition for test ...
"lint": "./node_modules/jsxhint/cli.js src/",
}
}
Run Code Online (Sandbox Code Playgroud)
好吧,够简单.但是当你运行npm run lint并且它失败了,而不是看起来好看的错误npm test,你会在输出linter后得到一个大量的错误信息:
npm ERR! Darwin 14.0.0
npm ERR! argv "node" "/usr/local/bin/npm" "run-script" "lint"
npm ERR! node v0.10.32
npm ERR! npm v2.1.7
npm ERR! code ELIFECYCLE
# and ~15 more lines...
Run Code Online (Sandbox Code Playgroud)
有没有办法让所有这些垃圾沉默,所以我可以像npm test脚本一样有一个干净的输出?我看到他们是如何捕获npm源代码中的错误的,但是我认为我不能只是添加一个自定义命令而不会这样做npm...希望我错了!
但是,如果我是,我会把这样的任务推到像Grunt这样的工具上会更好吗?谢谢!
为了响应状态变化,我想触发另一个状态变化.这本质上是一个坏主意吗?
特定类型的场景是组件被建模为状态机,根据值来呈现不同的信息this.state.current_state.但外部事件可以通过通量存储器改变状态来提示它经历状态转换.这是一个人为的想法来实现这个想法:
我认为正确的生命周期方法是这样做的shouldComponentUpdate.这样的效果:
shouldComponentUpdate: function(nextProps, nextState) {
if (nextState.counter > 4 && this.state.current_state !== DISPLAY_MANY) {
this.setState({ current_state: DISPLAY_MANY });
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
在某些子组件中,counter可能会增加,所以counter我不想根据某个变量的值推断它会显示什么,而是想明确地编码状态.
真实场景比这更复杂,但希望这个场景足够详细,以便了解这个想法.做我正在想的事情可以吗?
编辑:修复代码示例,以避免通过添加额外的状态条件触发无限循环
我想使用syntastic插件为vim我提供实时错误检查,同时我正在编写打字稿文件,使用tsc.我已经tsc激活了vim.有关如何tsc使用最接近的父tsconfig.json文件作为配置的任何建议?我发现tsc默认情况下没有这样做,这使syntastic配置变得困难.谢谢!
编辑:我认为它不使用的原因tsconfig.json是因为模块解析方法之类的选项似乎不起作用("require"未定义),并且它也没有捕获我在files属性中定义的定义文件tsconfig.json.
我尝试解决这个问题失败了:
let g:syntastic_typescript_checks=['tsc', 'tslint']
" typescript: find tsconfig.json
function! FindTypescriptRoot()
return fnamemodify(findfile('tsconfig.json', './;'), ':h')
endfunction
let g:syntastic_typescript_tsc_args=['-p', FindTypescriptRoot()]
Run Code Online (Sandbox Code Playgroud)
这导致Syntastic吐出给我这个错误:
app.ts|| TS5042: Option 'project' cannot be mixed with source files on a command line.
Run Code Online (Sandbox Code Playgroud)
这可能是因为它正在运行一个命令tsc -p /path/to/project/ app.ts,这是非法使用该标志...但我不明白为什么我的设置tsconfig.json被忽略syntastic:(
在PHP中,如果我想获得一个use声明中包含的类的完全限定类名,我该怎么做?例如,
<?php
namespace MyNamespace;
use Namespace\To\Class as MyClass;
function getNamespaceOfMyClass() {
// Return ??
}
echo getNamespaceOfMyClass();
Run Code Online (Sandbox Code Playgroud)
我知道有一种方法可以做get_class(new MyClass()),但如果我不能/不想做一个实例MyClass呢?谢谢!
我想知道:如果您的终端的当前工作目录位于纱线工作区内部,是否有一种方法可以运行在项目根目录中定义的纱线脚本,而不将当前目录更改为工作区之外?
例如,您可以通过运行来运行特定工作区的命令yarn workspace workspace-name script-name,但是是否可以使用该yarn workspace命令来定位根包本身而不是子包?
密码输入具有显示/隐藏按钮是很常见的,但我在网上发现很少有关于与其相关的可访问性问题的内容 - 我是否应该将任何类型的 ARIA 属性附加到按钮或密码输入?是一个复选框还是一个触发JS的按钮也能达到很好的效果?
不知道我应该注意什么,作为一个不太熟悉但想要了解可访问性最佳实践的人。
一个小问题:
我正在使用Rails作为我的REST API,但由于它是一个RESTful API,我并不真正需要:new或:edit路由任何我的资源,因为人们只会通过自动JSON请求完全与此API交互,而非图形化.例如,不需要专用的编辑页面.
目前,我需要为每个定义的资源做类似的事情:
# routes.rb
resources :people, except: [:new, :edit]
Run Code Online (Sandbox Code Playgroud)
:except在每个资源上都有选项并不是什么大事/config/routes.rb,但有没有办法定义默认值,所以我不必在每个资源上都指定这个?我想稍微干掉这段代码,不要做任何蹩脚的事情,比如在任何地方传递默认选项的局部变量.
更一般地说,你可以设置Rails路由的默认选项:exclude吗?
谢谢!
我有两个xdebug和Code Sniffer在我的PHPStorm安装上工作得很好,但真正讨厌的部分是调试器现在似乎将Code Sniffer错误视为断点并中断代码让我知道样式警告而我是试图测试代码.我该怎么做才能防止Code Sniffer被PHPStorm中的远程调试器捕获?
PS:我正在运行Apache,使用虚拟主机将某些URL映射到我的计算机上的文件夹,而代码嗅探器从未明确触发PHPStorm的远程调试器,而我的站点导致PHPStorm询问我是否要包含它的虚拟URL以进行调试.
我正在使用直接的ES6 Promises(使用es6-promise polyfill库),我遇到了一个问题,即访问以前在链接中的承诺的结果.
这个问题在Angular/Q的背景下是相同的,但是我对答案不满意,并想看看是否有更好的方法:
请考虑以下代码段:
Student.find().then(function(student) {
return HelpRequest.findByStudent(student);
}, function(error) { //... }
).then(function(helpRequest) {
// do things with helpRequest...
// PROBLEM: I still want access to student. How can I get access to it?
});
Run Code Online (Sandbox Code Playgroud)
在链式承诺中,我想使用student我在第一个承诺中得到的对象.但正如所写,这无法访问它.我有几个明显的选择:
我实际上不知道这是如何工作的,但另一个问题中的解决方案表明我可以调用then结果HelpRequest.findByStudent()和调用Promise.resolve内的组合结果Student.find().then.不过,我认为以下实现不起作用.
Student.find().then(function(student) {
var data = {student: student};
HelpRequest.findByStudent(student).then(function(helpRequest) {
data.helpRequest = helpRequest;
});
// PROBLEM: if HelpRequest.findByStudent(student) is asynchronous, how
// does this get the data before returning?
return …Run Code Online (Sandbox Code Playgroud)javascript ×2
node.js ×2
php ×2
alias ×1
class ×1
codesniffer ×1
ecmascript-6 ×1
flux ×1
google-oauth ×1
html ×1
namespaces ×1
npm ×1
promise ×1
reactjs ×1
reactjs-flux ×1
routes ×1
routing ×1
ruby ×1
syntastic ×1
typescript ×1
vim ×1
wai-aria ×1
webview ×1
xdebug ×1
yarnpkg ×1