这是我的第一篇SO帖子,请原谅任何错误!我也是Java的新手,我正在尝试使用Java中的Firebase来控制我的Nest恒温器。我收到了一个授权码,我用它来交换一个accessToken。但是,我无法弄清楚如何使用Firebase Java库进行身份验证。方法是
public void authWithOAuthToken(String provider, String token, Firebase.AuthResultHandler handler)`.
但是,我无法弄清楚provider
参数应该是什么。我尝试过google
,Google
,Nest
,nest
,custom
,anonymous
;一切都无济于事。
我设置了处理程序,以便根据调用的方法打印出成功消息或错误消息,但它不会打印出这些中的任何一个!
我甚至不确定提供商是否是我没有收到回复的原因。
附件是代码和输出的片段。
System.out.println("OKAY IM HERE");
Firebase firebase = new Firebase("wss://developer-api.nest.com");
Firebase.AuthResultHandler handler = new Firebase.AuthResultHandler()
{
public void onAuthenticated(AuthData authData)
{
System.out.println("Success! AuthData: " + authData);
}
public void onAuthenticationError(FirebaseError firebaseError)
{
System.out.println("Error! " + firebaseError);
}
};
System.out.println("NOW IM HERE!");
//I'm hitting here
firebase.authWithOAuthToken("anonymous",accessToken,handler);
System.out.println("MAMA WE MADE IT");
//not hitting here
这就是输出:
OKAY IM HERE
NOW IM HERE!
编辑:
我已将方法更改为:
public void authWithCustomToken(String token, Firebase.AuthResultHandler handler)
现在我得到了当前的输出:
OKAY IM HERE
NOW IM HERE!
MAMA WE MADE IT
但是,onAuthenticated和onAuthenticationError方法都没有打印...
答案 0 :(得分:0)
我意识到我实际上有一个阻止连接并导致超时的防火墙。这解决了它!