我正在使用 chrome.identity.launchWebAuthFlow 从我的 Rails 应用程序中检索身份验证代码,该应用程序使用 Doorkeeper gem 设置为 OAuth2 提供程序(Doorkeeper 方面正在工作)。
因此,我使用 Chrome 扩展程序中的此方法将请求发送到我的服务器:
requestGrant: function(){
chrome.identity.launchWebAuthFlow(
{
'url': authService.grantEndPoint(),
'interactive': true
}, function(redirect_url){
/* Extract auth code from redirect_url */
var code = authService.extractCode(redirect_url);
alert(code);
authService.getAccessToken(code);
}); //launchWebAuthFlow ends here
}
Run Code Online (Sandbox Code Playgroud)
我的服务器收到请求并重定向到
https://<my_chrome_extension_name>.chromiumapp.org/oauth2?code=<access_code_generated_by_oauth>
Run Code Online (Sandbox Code Playgroud)
发现 302。
但是,Chrome 扩展立即关闭,并且launchWebAuthFlow 的回调函数没有运行。我知道它没有运行,因为我在回调中调用了 alert()(未运行),并向我的服务器发出另一个请求以获取访问令牌(服务器未收到请求)。
我认为部分问题在于,当调用 launchWebAuthFlow 时,chrome 扩展可能会关闭,因为 launchWebAuthFlow 打开的窗口是服务器授权流的 Web 视图,并且扩展关闭(或者只是通过延期?)
出于某种原因,launchWebAuthFlow 的默认行为是根据文档关闭窗口,但回调仍未运行。
如何让回调函数运行,并防止 chrome 扩展窗口关闭?
我正在尝试在本地本机中使用Google Places API。我首先尝试使用fetch直接发出请求,但我只是看到您必须使用Google提供的现有类/对象,例如PlacesService。搜索包含您的API对象的React Native库只会显示一些具有自动完成功能的库,而没有太多其他的库。
Places API文档说使用以下URL加载库: <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places"></script>
对于我来说,这在常规的Web开发人员中是直截了当的,但在React Native中却不是。在React Native中加载这样的库的标准过程是什么?
现在,我已经将上面链接中的JS内容复制并粘贴到了我的React Native项目中的文件中。但是,我什至不知道如何导出它,因为我无法真正分辨出对象/函数的名称。谷歌 ?谷歌地图 ?
现在我正在做:
export default google.maps
Run Code Online (Sandbox Code Playgroud)
并尝试了
export default google
Run Code Online (Sandbox Code Playgroud)
但是这些都抛出此错误:
cannot read property 'createElement' of undefined
Run Code Online (Sandbox Code Playgroud)
这是我的第一个React Native项目,所以如果这是一个基本问题,我感到抱歉。
谢谢您的帮助。
嗨我在我的rails应用程序中有一个种子文件,我在其中销毁所有旧对象以启动,然后创建各种各样的新对象.我希望创建新对象的id为1,因为所有旧对象都被销毁,但是使用高于旧对象的所有id的id创建新对象.因此,举个例子,我有50个Post对象,id为1-50.我运行Post.destroy_all并创建了50个Post对象.所有旧的Post对象都被销毁,但新的Post对象都具有51-100的id.Post.find(1)不存在.
这是我的种子文件:
Photo.destroy_all
Post.destroy_all
Like.destroy_all
50.times do
Photo.create(name: Faker::Name.name)
end
50.times do
Post.create(body: Faker::Lorem.paragraph)
end
def get_parent
resource = [Post, Photo].sample
parent = resource.all.sample
parent
end
150.times do
parent = get_parent
Like.create(likeable_type: parent.class.name, likeable_id: parent.id)
end
Run Code Online (Sandbox Code Playgroud)
如果我多次运行rake db:seed,每次运行时每个对象集合的ID会高出50.所以当id为101 - 150并运行rake db:seed时,id现在为151-200,没有任何对象存在且id小于151.
如何在销毁所有记录后创建具有从1开始的ID的对象,以及为什么我得到此当前行为?
谢谢您的帮助.
我在我的反应原生屏幕文件中收到此错误:
SyntaxError in /MyFile.js: Unexpected token, expected ; (5:10)
Run Code Online (Sandbox Code Playgroud)
我一直在盯着它试图弄清楚什么是错的,但是我是React的新手.
这是MyFile.js:
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
const LogInScreen = () => {
render(){
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Login</Text>
</View>
);
};
};
export default LogInScreen
Run Code Online (Sandbox Code Playgroud)
我仔细检查了ES6语法,我的箭头功能显示正确.我用括号而不是括号试了一下,括号周围的括号只是为了确定.