在Ubuntu的4.23.0 64位系统上登录slack-desktop无法工作

84
在应用程序中,选择“文件 > 工作区 > 登录新工作区”会打开一个浏览器窗口。在浏览器中选择工作区后,它会返回到 Slack,但是却没有起作用。Slack 桌面版上什么都没有发生。
在链接过程中检查运行的命令时,看起来 KDE 修改了链接。我该怎么做才能解决这个问题?

在我的情况下,问题很傻:我配置了 http_proxy,但没有运行代理。因此,Slack无法连接,也没有任何解释,但Chrome忽略了 http_proxy,所以它看起来工作正常。 - rustyx
14
我找到的最简单的解决方案是前往以下网址: https://[yourworkspace].slack.com/ssb/signin_redirect/fallback 在那里,您可以复制一个神奇的链接,当您切换到 Slack 桌面应用程序时,它将从剪贴板中读取该链接。有时我需要尝试几次,但最终它总是能够正常工作 :) - aweibell
@aweibell,这个方法对我有效,谢谢。但是现在每次我启动Chrome,那个页面总是自动打开。我已经检查了Chrome的设置,进入了“启动时”,设置为只打开新标签页。有没有解决办法? - undefined
@aweibell的解决方案一开始对我没有起作用,因为我使用了一个追踪器阻止器(Vivaldi浏览器)。我不得不将其关闭,然后它才起作用。 - undefined
6个回答

173

Boon的回答是正确的。我想在那个答案下留言,但显然需要50分才能评论,所以我只能添加新答案...

经过调查,似乎来自kde-cli-tools的kde-open5对URL的第一个元素进行了一些奇怪的小写处理(slack://A/B/C 变成了 slack://a/B/C)。这听起来像是一个老问题:https://bugs.kde.org/show_bug.cgi?id=429408

我怀疑Slack在处理链接/链接方面发生了变化- 这与我的情况中Slack升级相吻合:slack-desktop:从4.22.0升级到4.23.0。

查看进程列表:

  • Slack网站要求浏览器使用大写打开链接
  • kde-open5以正确的链接运行
  • slack以小写工作区运行

我已向Slack报告了所有详细信息,希望能够解决。

解决方法:

只是添加了一些细节,以补充(Boon建议)

  1. 在bash中运行快速脚本:

while sleep .1; do ps aux | grep slack | grep -v grep | grep magic; done
  1. 尝试登录到 Slack - 在浏览器中接受登录尝试
  2. 您应该在控制台中看到登录链接:
kde-open5 slack://WORKSPACE_ID/magic-login/...
/usr/lib/slack/slack --enable-crashpad slack://workspace_id/magic-login/...
  1. 使用正确的链接打开Slack:
/usr/lib/slack/slack --enable-crashpad slack://WORKSPACE_ID/magic-login/...

4
谢谢。我在KDE错误跟踪程序中添加了一条评论:https://bugs.kde.org/show_bug.cgi?id=429408#c3 - Egon Willighagen
3
从snap store安装的Slack的路径为/snap/bin/slack - Aamir
2
唯一可行的解决方法确实涉及一些shell编程,因此这个问题毕竟适合在StackOverflow上提问。 - Szczepan Hołyszewski
2
请注意,您只需选择该魔术链接并将其复制到剪贴板中。当您切换到 Slack 时,它将自动登录。 - jsravn
这个之前可以用,现在不行了。现在可以用的是这个链接: https://stackoverflow.com/questions/70867064/signing-into-slack-desktop-not-working-on-4-23-0-64-bit-ubuntu/71409129#71409129 - undefined
显示剩余9条评论

113
我正在使用Archlinux,但是无论是点击链接还是将链接传递给Slack参数都没有起作用。如果您在浏览器中打开dev控制台,您可以找到正确的链接,它应该出现在控制台输出中。如果您将此链接复制到剪贴板(ctrl + c),然后切换到Slack应用程序,似乎当Slack自动关注时会读取剪贴板并处理它是否为链接。这样就能够登录了。 enter image description here

7
它在Kubuntu 21.10上成功了,你救了我!! - Danh Mạnh
7
刚刚对我有用,Kubuntu 22.04,我尝试了这里提到的所有其他方法,但都没有用,只有这个管用。 - user3049941
3
在我的电脑上,Ubuntu 22.04与KDE Plasma 5.24兼容。 - hjkatz
3
在使用 Plasma 5.24.5 的 Garuda Linux 上,这对我有用。 - Tyler C
4
它在运行Plasma 5.25.4的Fedora Workstation 36上工作,使用了从官方网站安装的Chrome和Slack 4.28.171的RPM。需要确保将链接粘贴到某个地方以确保它实际上在剪贴板中,而不仅仅是“复制”链接。 - hijarian
显示剩余9条评论

44

感谢这里对问题的优秀分析,我成功创建了一个脚本来解决这个问题。

#!/usr/bin/env bash

if [[ "${1:-}" = slack://* ]]; then
    exec /usr/lib/slack/slack --enable-crashpad "$1"
fi

exec /usr/bin/xdg-open "$@"

将上述脚本保存为/usr/local/bin/xdg-open并将脚本设置为可执行。就是这样!

我真的希望KDE团队能够关注这个如此基本的问题,特别是考虑到Slack的广泛使用。


2
在某些Linux系统中,/usr/lib/slack/slack实际上是/usr/bin/slack。 - 42n4
1
聪明!比轮询ps输出更精细的解决方案。在基于Kubuntu 22.04的系统上验证过了。如注释所述,如果您是通过slack.com官方的.deb包安装的,那么需要使用/usr/bin前缀。 - ardnew
1
@trulyliu 我不确定在哪里添加那段代码。上面的解决方案会为您完成所有操作。它覆盖了系统范围内的 xdg-open,仅适用于 Slack。您只需要确保 slack 和原始的 xdg-open 的路径是正确的即可。我不想去处理字符串,因为我不确定它是否是混合大小写。 - ϹοδεMεδιϲ
非常好的方法,帮了我大忙!非常感谢。 - jjo
我使用了以下命令: exec $(which slack) --enable-crashpad "$1" - undefined

19

在 Kubuntu 20.04 和 Chrome 浏览器中遇到了同样的问题。火狐浏览器解决了这个问题。


1
我只是想确认一下,我在Kubuntu 22.04上使用的Snap Slack包可以正常工作!我尝试了其他评论中提供的解决方案,但无法使它们对我起作用。 - Alex Shenfield
可以确认,对我来说Firefox有效,而不是Chrome!谢谢和干杯 - timsntech
Kubuntu 22.04, 确实如此,它能够正常运行! - Tuukka Mustonen
只需将Firefox设置为我的默认浏览器并使用它进行登录(而不是Google Chrome),问题就得到了解决。 - Yash Bhalgat
这对我有用。我甚至没有将其设置为默认浏览器。我只是将登录网址复制并粘贴到火狐浏览器中,它就会自动转发并登录到桌面应用程序。 - undefined

14

在尝试了各种方法后,我注意到上面的tlvs8sasf有可能是工作区 ID,在日志中通常会使用大写。

因此,我尝试通过将工作区 ID 转换为大写来更新深度链接,然后单击它。瞧,它对我起作用了。希望这也能帮助其他遇到同样问题的人。


8

每次重启计算机时,我几乎都会遇到这个问题,并且有约10个活跃的Slack工作区,所以我编写了一个快速的bash脚本来解决它。它并不是为了强大稳定而设计的,但它有效。如果对其他人有用的话,我会在这里留下它。

# Workaround to get slack to open workspaces correctly.
# Problem and workarond concept as described here:
# https://dev59.com/Y1EG5IYBdhLWcg3wMGTV
# Usage: Run this script, open slack as normal, and attempt to log into workspaces as normal. Once done, kill the script.

while sleep .1; do 
        line=$(ps ax | grep slack | grep -v grep | grep magic | awk '{ print $NF }')
        WD=$(echo $line | cut -d '/' -f 3 | tr [:lower:] [:upper:])
        LN=$(echo $line | cut -d '/' -f 5)
        if [ "$WD" != "" ]; then
                echo "got $line"
                line2="slack://$WD/magic-login/$LN"
                echo "Attempting to open $line2"
                /usr/lib/slack/slack --enable-crashpad $line2
        fi
done | grep -v "^$"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接