小编srl*_*020的帖子

launchWebAuthFlow 回调未运行,Chrome 扩展程序窗口立即关闭?

我正在使用 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 扩展窗口关闭?

javascript google-chrome-extension

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

如何在React Native中加载Google Places API?

我正在尝试在本地本机中使用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项目,所以如果这是一个基本问题,我感到抱歉。

谢谢您的帮助。

react-native

5
推荐指数
1
解决办法
3943
查看次数

在销毁所有记录之后,为什么创建的新对象的id高于旧的最后一个记录的id?

嗨我在我的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的对象,以及为什么我得到此当前行为?

谢谢您的帮助.

ruby-on-rails

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

在我的反应原生屏幕中获得意外的令牌错误(期待";")?

我在我的反应原生屏幕文件中收到此错误:

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语法,我的箭头功能显示正确.我用括号而不是括号试了一下,括号周围的括号只是为了确定.

react-native

0
推荐指数
1
解决办法
206
查看次数