GWT中的Google+登录按钮

时间:2013-02-28 16:46:54

标签: gwt google-plus

我想在GWT中使用新的Google+ sign-in button。我找到了this post 关于如何从html制作小部件,但我还没有成功。

public class GooglePlusSignIn extends Widget{

private final String googleHtml="<span id=\"signinButton\">"
+"<span"
+"class=\"g-signin\""
+"data-callback=\"signinCallback\""
+"data-clientid=\"clientID\""
+"data-cookiepolicy=\"single_host_origin\""
+"data-requestvisibleactions=\"http://schemas.google.com/AddActivity\""
+"data-scope=\"https://www.googleapis.com/auth/plus.login\">"
+"</span>"
+"</span>";

 public GooglePlusSignIn(String params) {
     Document document = Document.get();
     DivElement divElement = document.createDivElement();
     divElement.setInnerHTML(googleHtml);
     setElement(divElement); //important, widget needs to know it's root element
 }


 private static native void doJsMagic(Element element)/*-{ //notifies js about element
 }-*/;

 private static native void undoJsMagic(Element element)/*-{ 
    //notifies js that it should do some cleanup (if needed)
    //since it is unaware of GWT widget lifecycle

 }-*/;

 @Override
 public void onAttach() {
    super.onAttach();
    doJsMagic(getElement());
 }

 @Override
 public void onDetach() {
    super.onDetach();
//        undoJsMagic(getElement());
     }

}

2 个答案:

答案 0 :(得分:1)

您的字符串中需要空格。跨度和类之间的空间,\&#34; g-signin \&#34;和数据回调等。

另外,我假设您知道这一点,但您必须使用开发人员控制台中的实际客户端ID替换clientID。

答案 1 :(得分:0)

您似乎需要在doJsMagic中拨打$wnd.gapi.signin.go(element),但只需在第一次附加上拨打一次。您无需在undoJsMagic中执行任何操作。