5
        HttpTransport netTransport = new NetHttpTransport();
        JsonFactory jsonFactory = new JacksonFactory();
        GoogleTokenResponse token;
        try {
            token = new GoogleAuthorizationCodeTokenRequest(
                    netTransport,
                    jsonFactory,
                    CLIENT_ID,
                    CLIENT_SECRET,
                    CODE,
                    REDIRECT).execute();

            GoogleCredential cd = new GoogleCredential().setAccessToken(token
                    .getAccessToken());

            Plus plus = Plus
                    .builder(new NetHttpTransport(), new JacksonFactory())
                    .setApplicationName(APP_NAME)
                        .setHttpRequestInitializer(cd).build();

            Person profile = plus.people().get("me").execute();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

こんにちは。Google App Engine アプリで Google + からユーザー情報を取得しようとしていますが、GoogleAuthorizationCodeTokenRequest の CODE パラメータを何に入れるか、どのように取得するかで行き詰まっています。どんな助けでも大歓迎です。ありがとうございました。

4

3 に答える 3

0

de CODEはリダイレクトURLから取得できます。

HttpTransport httpTransport = new NetHttpTransport();
                JsonFactory jsonFactory = new JacksonFactory();
        
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(httpTransport, jsonFactory, CLIENT_ID, CLIENT_SECRET,
        Arrays.asList(DriveScopes.DRIVE)).setAccessType("offline").setApprovalPrompt("auto").build();
String url = flow.newAuthorizationUrl().setRedirectUri(REDIRECT_URI).build();
res.sendRedirect(url);
于 2013-04-05T17:04:34.273 に答える
0

レミー・ティコナの答えを改善しようとします。基本的な oAuth 承認フローは次のとおりです。

  1. ユーザーからのアクセスを要求します。アプリはユーザーを認証 URL にリダイレクトする必要があります。そのページで、Google はユーザーにアクセスを求めます。
  2. ユーザーがアクセスを許可した後、彼は REDIRECT_URL にリダイレクトされます。そこで、あなたに最適なオプションを選択できます:
    1. アプリに Web ブラウザーが組み込まれている。urn:ietf:wg:oauth:2.0:oob:autoURL に使用します。ユーザーがアクセスを許可すると、アプリは Web ページのタイトルからアクセス コードを読み取る必要があります。
    2. あなたのアプリをウェブサーバーとして。Web アプリの URL を使用します。アクセスコードはクエリパラメーターになり、それを処理できます
    3. あなたのアプリには上記の機能がありません。urn:ietf:wg:oauth:2.0:oobREDIRECT_URL として使用します。ユーザーがアクセスを許可すると、アクセス コードが記載されたページにリダイレクトされ、それをコピーしてアプリに貼り付けるように要求されます。

ここで見つけることができる詳細情報: https://developers.google.com/identity/protocols/OAuth2InstalledApp?hl=RU#choosingredirecturi

小さな例:

GoogleAuthorizationCodeFlow authorizationCodeFlow = new GoogleAuthorizationCodeFlow
                    .Builder(httpTransport, jsonFactory, clientId, clientSecret, scopes)
                    .setCredentialDataStore(new MemoryDataStoreFactory().getDataStore("tokens"))
                    .build();
String userId = "user-id";
Credential credential = authorizationCodeFlow.loadCredential(userId);
if (credential == null) {
        GoogleAuthorizationCodeRequestUrl authorizationUrl = authorizationCodeFlow.newAuthorizationUrl();
        authorizationUrl.setRedirectUri(GoogleOAuthConstants.OOB_REDIRECT_URI);
        LOGGER.error("Please, authorize application. Visit {}", authorizationUrl);
        Scanner s = new Scanner(System.in);
        String code = s.nextLine();
        GoogleAuthorizationCodeTokenRequest tokenRequest = authorizationCodeFlow.newTokenRequest(code);
        tokenRequest.setRedirectUri(GoogleOAuthConstants.OOB_REDIRECT_URI);
        GoogleTokenResponse tokenResponse = tokenRequest.execute();
        credential = authorizationCodeFlow.createAndStoreCredential(tokenResponse, userId);
    }
于 2016-03-05T00:24:38.137 に答える