如何使用 ngrok 隧道使 spring social facebook 在 localhost 上工作

Posted

技术标签:

【中文标题】如何使用 ngrok 隧道使 spring social facebook 在 localhost 上工作【英文标题】:How to make spring social facebook work on localhost using ngrok tunneling 【发布时间】:2018-05-19 13:55:09 【问题描述】:

我想使用我的用户凭据向我的 facebook 页面发送一条消息,并使用 ngrok 创建一个 localhost 隧道,以便 facebook 可以访问我的机器。但是我仍然收到一个错误的请求 (500),告诉我我没有注册任何域或 supdomains。

在 developers.facebook.com 上,我的 App 域中有这样的内容:04cda25e.ngrok.io

我的网站网址中有这个 https://04cda25e.ngrok.io/

这是我的代码:

//https://***.com/questions/13376710/facebook-app-domain-name-when-using-localhost Ik krijg badrequest omdat ik geen appdomain opgegeven heb
    public void postToFacebook()
        FacebookConnectionFactory connectionFactory =
                new FacebookConnectionFactory("1783242201976620", "******");

        OAuth2Operations oauthOperations = connectionFactory.getOAuthOperations();
        OAuth2Parameters params = new OAuth2Parameters();
        params.setRedirectUri("https://04cda25e.ngrok.io/1234");

//appid:1783242201976620 <<<<< not really an appid
//apptoken:Ycics4TEiCAs9JZXyHD4I489D6M <<<< this is like a mock apptoken. Totally not a real one that's for sure... 

        params.setScope("public_profile,email,user_birthday");

// upon receiving the callback from the provider: http://massapi.com/method/an/andExpect.html
        AccessGrant accessGrant = oauthOperations.exchangeCredentialsForAccess("*****", "****",params);
        Connection<Facebook> connection = connectionFactory.createConnection(accessGrant);
        Facebook facebook = connection.getApi();
        //facebook.pageOperations().
         facebook.feedOperations().updateStatus("I'm trying out Spring Social!");


    

它在我尝试获取访问权限时引发 500 错误。

有人可以帮忙吗?

编辑:这是从我的 Facebook 设置中截取的屏幕截图:https://pasteboard.co/GXjfojs.png

有人知道我应该改变什么吗?

【问题讨论】:

它只是我的应用程序 ID。他们没有我的 apptoken... 哦废话我明白你现在指的是什么,它是我在代码中注释掉的应用程序 ID 和应用程序令牌,对吗?妈的…… 等一下,让我把那些东西编辑出来…… 那里...我的帐户又安全了;) 【参考方案1】:

好吧,我还没有找到解决问题的方法,但我找到了一种解决方法,可以在不使用 Spring social 获得访问权限的情况下访问 facebookpage。它是这样的:

1) 登录 facebookdeveloper

2) 转到工具和支持

3)选择Graph API explorer,你可以手动请求访问令牌。

4) 按get Token按钮,选择你想要的类型

5) 选择您希望您的应用对该页面拥有的权限,然后点击“获取访问令牌”

6)Facebook 生成一个字符串,它是访问令牌。通过将此字符串包含在 AccessGrant 构造函数中,使用它在 java 中实例化 AccessGrant 对象。

7) 使用此 AccessGrant 创建连接,瞧!

希望这对任何人都有帮助..

【讨论】:

以上是关于如何使用 ngrok 隧道使 spring social facebook 在 localhost 上工作的主要内容,如果未能解决你的问题,请参考以下文章

连接到 *** 时如何使用 ngrok 进行隧道传输?

隧道通过 ngrok 剥离风格和主题的 wordpress 网站

如何从 Google Colab Notebook 中杀死 Ngrok 隧道

如何调试 ngrok 隧道暴露的远程 JVM

如何配置 HTTP 隧道以配置我的 edx localhost 以使用 ngrok 从 Internet 访问?

如何在 C# Socket 中使用 ngrok tcp 隧道