小编Nob*_*oda的帖子

Google api auth2 signOut无效

首先,我按照本指南https://developers.google.com/identity/sign-in/web/和此参考https://developers.google.com/identity/sign-in/web/reference.

但是我没有声明回调window,而是使用gapi.signin2.render函数来渲染按钮并在我的Angular控制器中为它添加一个处理程序.

登录工作正常,问题是,当我尝试通过调用注销时gapi.auth2.getAuthInstance().signOut(),它只是没有这样做.

我注意到accounts.google.com的sessionStorage仍然存在,因此当我在登录屏幕上再次呈现按钮时,Google会自动重新登录.

我试过看完signOut()完成后会发生什么:

gapi.auth2.getAuthInstance().signOut().then(function() {
    console.log(gapi.auth2.getAuthInstance().isSignedIn.get());
    // prints 'true'
});
Run Code Online (Sandbox Code Playgroud)

我也试过调用disconnect()而不是signOut()知道它会撤销访问权限,它确实从sessionStorage中删除了令牌,但用户会话仍在那里.一旦我重新加载页面,它就消失了.

这是我的完整代码:

$scope.logout = function() {
    //...
    gapi.auth2.getAuthInstance().signOut().then(function() {
      console.log(gapi.auth2.getAuthInstance().isSignedIn);
    });
};

$scope.processAuth = function(authResult) {
  console.log("success");
  if(authResult.getAuthResponse().id_token) {
    // backend calls
  }
};

$scope.renderSignInButton = function() {
  console.log(gapi.auth2);
  gapi.signin2.render('signInButton',
    {
      'onsuccess': $scope.processAuth, // Function handling the callback.
      'onfailure': $scope.signinFailed, // Function handling the callback.
      'clientid': 'asdasdasd.apps.googleusercontent.com',
      'scope': 'https://www.googleapis.com/auth/userinfo.email',
      'cookiepolicy': 'single_host_origin'
    } …
Run Code Online (Sandbox Code Playgroud)

javascript google-api google-api-client angularjs

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

MP3不会与JMF流式传输

基本思想是访问.mp3文件并通过RTP流将其发送给其他想要播放该歌曲的客户端.

这是RTPServer.java,我在网上找到并根据自己的喜好进行了修改. __CODE____CODE__窗口上获取整个屏幕的设备上下文,并可以通过调用来跟进__CODE__:

    package server;

import java.net.InetAddress;
import javax.media.rtp.*;
import javax.media.rtp.rtcp.*;
import javax.media.*;
import javax.media.protocol.*;
import javax.media.control.*;

public class RTPServer implements ControllerListener, Runnable {
    private boolean realized = false;
    private boolean configured = false;
    private String ipAddress;
    Processor p;
    MediaLocator src;

    public static void main (String[] args) {
        RTPServer rtp = new RTPServer("192.168.1.101", "04 - Blue.mp3");
        Thread t = new Thread(rtp);
        t.start();
    }

    public RTPServer(String ip, String song) {
        ipAddress = ip;
 String srcFile = …
Run Code Online (Sandbox Code Playgroud)

java audio streaming mp3 jmf

10
推荐指数
1
解决办法
4525
查看次数

Java Servlet 3.0服务器推送:使用相同的AsyncContext多次发送数据

通过这里回答的几个例子和问题(主要是 http://www.javaworld.com/javaworld/jw-02-2009/jw-02-servlet3.html?page=3),我想让服务器发送多个响应没有完成请求的客户的时间.当请求超时时,我创建另一个,依此类推.

我想避免长时间轮询,因为每次收到响应时我都必须重新创建请求.(而且这不是servlet 3.0的异步功能所针对的).

我在服务器端有这个:

@WebServlet(urlPatterns = {"/home"}, name = "async", asyncSupported = true) 

public class CometServlet extends HttpServlet {

    public void doGet(final HttpServletRequest request, final HttpServletResponse response) throws IOException, ServletException {

        AsyncContext ac = request.startAsync(request, response);

        HashMap<String, AsyncContext> store = AppContext.getInstance().getStore();

        store.put(request.getParameter("id"), ac);

    }
}
Run Code Online (Sandbox Code Playgroud)

还有一个写入异步上下文的线程.

class MyThread extends Thread {
    String id, message;

    public MyThread(String id, String message) {
        this.id = id;
        this.message = message;
    }

    public void run() {
        HashMap<String, AsyncContext> store = AppContext.getInstance().getStore();
        AsyncContext ac …
Run Code Online (Sandbox Code Playgroud)

java servlets server-push java-ee servlet-3.0

4
推荐指数
1
解决办法
5636
查看次数