2

私は Google アプリ エンジンの Java アプリを構築しており、ドメインの共有連絡先のリストを取得する必要があります。まず、認証のために Google Authsub を実装してみます。コードを記述します。

@SuppressWarnings("serial")
public class Contact_SearchServlet extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
        resp.setContentType("text/plain");
    String nextUrl = "http://threeleggedoauth.appspot.com/authsub";
        String scope = "http://www.google.com/m8/feeds/";
        boolean secure = true;  // set secure=true to request secure AuthSub tokens
        boolean session = true;
        String authSubUrl = AuthSubUtil.getRequestUrl(nextUrl, scope, secure, session);

        resp.sendRedirect(authSubUrl);


    }
}

このサーブレットにリクエストを送信するときに、セッショントークンを取得しようとし、その後、URL http://www.google.com/m8/feeds/contacts/iritesh.com/fullを呼び出して、必要なすべてのヘッダーをコードに含めようとします/authsub へのマップは

public class Authsub extends HttpServlet {
        private  static final Logger log = Logger.getLogger(Authsub.class.getName());

        public void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws IOException {


            String singleUseToken = AuthSubUtil.getTokenFromReply(req.getQueryString());    
    resp.getWriter().println(singleUseToken);


            java.security.PrivateKey privateKey;
            String sessionToken = null;
            try {
                privateKey = AuthSubUtil.getPrivateKeyFromKeystore("Example.jks", "changeme", "Example", "changeme");

             sessionToken = AuthSubUtil.exchangeForSessionToken(singleUseToken, privateKey);
      resp.getWriter().println("SessionToken is "+sessionToken);

            } catch (GeneralSecurityException e) {
                // TODO Auto-generated catch block
                resp.getWriter().println("Hello World1");
                e.printStackTrace();
            } catch (AuthenticationException e) {
                // TODO Auto-generated catch block
                resp.getWriter().println("Hello World2"+e.getMessage()+e.getInternalReason()+e.getDebugInfo()+e.getLocalizedMessage());
                e.printStackTrace();
            }             
            URL uu=new URL("http://www.google.com/m8/feeds/contacts/iritesh.com/full");
HttpURLConnection cc= (HttpURLConnection) uu.openConnection();
cc.setRequestMethod("GET");
cc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
cc.setRequestProperty("Authorization" ,"AuthSub token=\""+sessionToken+"\"");
cc.setRequestProperty("GData-Version" ,"3.0" );
BufferedReader br = new BufferedReader(new InputStreamReader(cc.getInputStream()));
String sb = "";
String line;
while ((line = br.readLine()) != null) {
    sb+= line+"\n";
}
br.close();
    resp.getWriter().println("Response is "+sb);
        }


        }

しかし、私はエラーに直面しており、承認後にthreeleggedoauth.appspot.com/authsubにリダイレクトすると、エラー401に直面しています。スクリーンショットはこちらです。このエラーが発生する理由を教えてください。私はこのチュートリアルに従っています https://developers.google.com/google-apps/domain-shared-contacts/エラーのスクリーンショットはここ、threeleggedoauth.appspot.comでライブエラーを確認できます 助けてください!!

4

0 に答える 0