小编Ben*_*Ben的帖子

使用有效的access_token时缺少令牌端点URI

突然(可能是一个宝石更新?)调用谷歌api停止了woking.我已经能够检索gmail线程,但不再.

到目前为止我所拥有的:

我能够检索刷新令牌以进行离线访问.所以我存储了刷新和访问令牌.大.

现在我想检索个人资料信息.这是我的工作(请注意,这曾经很好用!)

我将在下面的每一行之后添加一个看跌期权来向您展示我们得到的......

module AuthHelper
  require 'google/api_client/client_secrets'
  ...
  client = Signet::OAuth2::Client.new(access_token: user.gmail_access_token)
  service = Google::Apis::GmailV1::GmailService.new
  service.authorization = client
  service.get_user_profile('me') # retrieve threads
  ...
end
Run Code Online (Sandbox Code Playgroud)

让我打印出我得到的回复:

CLIENT : --- !ruby/object:Signet::OAuth2::Client
authorization_uri: 
token_credential_uri: 
client_id: 
client_secret: 
code: 
expires_at: 
expires_in: 
issued_at: 
issuer: 
password: 
principal: 
redirect_uri: 
scope: 
state: 
username: 
expiry: 60
extension_parameters: {}
additional_parameters: {}
access_token: ya29.Ci8QA3K_mLh1vB_55bSnGVB66yLwzkxClM8yCI5qmmZo6n0JzjVNA7Q6EAOm3qQeGw

SERVICE : --- !ruby/object:Google::Apis::GmailV1::GmailService
root_url: https://www.googleapis.com/
base_path: gmail/v1/users/
upload_path: upload/gmail/v1/users/
batch_path: batch
client_options: !ruby/struct:Google::Apis::ClientOptions
  application_name: unknown
  application_version: 0.0.0
  proxy_url: 
  use_net_http: false
request_options: !ruby/struct:Google::Apis::RequestOptions
  authorization: 
  retries: 0 …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails google-api oauth-2.0

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

Turbolinks 不友好?

我完全明白为什么 Turbolinks 5 很棒,如果您正在阅读它,您可能也会这样做,但我对它与其他脚本的糟糕表现感到非常沮丧。

迄今为止,还没有简单的解释(人类可读的)来展示如何以允许它们运行的​​方式包装现有的 jQuery 脚本。以这个为例: https: //github.com/Bttstrp/bootstrap-switch。写得很好,简单易懂。您将 js 和 css 加载到资产管道中并在某个页面上实例化它。

# view.html.erb
<input type="checkbox" class="switch"> switch button
<script type="text/javascript">
    $(".switch").bootstrapSwitch();
</script>
Run Code Online (Sandbox Code Playgroud)

您转到 view.html,单击另一个页面,单击返回,您会看到两个按钮。

接下来,您花了 5 个小时寻找一种方法,让 Turbolinks 仅加载一次 bootstrapSwitch 实例(如果之前未加载)。好吧,即使你这样做了,功能也会消失。点击它不会起作用。

$(document).on("turbolinks:load", function()...将在每次 Turbolink 访问时加载它,目前,我可以让它工作并且不创建重复项的唯一方法是禁用 view.html 上的缓存

<%= content_for :head do %>
    <meta name="turbolinks-cache-control" content="no-cache">
<% end %>
Run Code Online (Sandbox Code Playgroud)

这感觉有点愚蠢。

我认为这一切都与使用幂等有关 - https://github.com/turbolinks/turbolinks#making-transformations-idempot但你实际上是如何做到这一点的?

有人可以以这个简单的插件为例,分享一个简单、优雅的解决方案来使其工作,然后我们可以用其他脚本重现它吗?

ruby-on-rails turbolinks turbolinks-5

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

Linking.removeEventListener 必需参数

如果我在 useEffect 挂钩中声明

Linking.addEventListener('url', ({ url }) => {
  handleUrl({ url, userDetails });
});
Run Code Online (Sandbox Code Playgroud)

在钩子的清理函数中编写是否足够Linking.removeEventListener('url', handleUrl);,或者我是否必须传递与声明中相同的参数Linking.addEventListener

react-native

2
推荐指数
2
解决办法
4556
查看次数

Firestore 按字段值检索单个文档并更新

我试图通过字段值检索单个文档,然后更新其中的字段。当我这样做时,我将获得具有匹配.where("uberId", "==",'1234567')字段的所有文档。我确信这样的文件只有一份。但是,我不想使用 uberId 作为文档的 ID,否则我可以轻松地通过 ID 搜索文档。是否有另一种方法可以通过字段 ID 搜索单个文档?uberId1234567

到目前为止,阅读文档,我可以看到:

const collectionRef = this.db.collection("bars");
const multipleDocumentsSnapshot = await collectionRef.where("uberId", "==",'1234567').get();
Run Code Online (Sandbox Code Playgroud)

然后我想我可以做得到const documentSnapshot = documentsSnapshot.docs[0]唯一现有的文档参考。

但后来我想用以下内容更新文档:

documentSnapshot.set({
  happy: true
}, { merge: true })
Run Code Online (Sandbox Code Playgroud)

我收到错误Property 'set' does not exist on type 'QueryDocumentSnapshot<DocumentData>'

javascript firebase google-cloud-firestore

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