Print apks list of specific packageName using googleapi, androidpublisher and service account authentication (v3).

const {google} = require('googleapis');
const key = require('./privateKey.json')
const packageName = "com.company.example"

let client = new google.auth.JWT(
  key.client_email,
  undefined,
  key.private_key,
  ['https://www.googleapis.com/auth/androidpublisher']
)
const androidApi = google.androidpublisher({
  version: 'v3',
  auth: client
})

async function getApksList() {
    let authorize = await client.authorize();
    //insert edit
    console.log('authorize :', authorize);
    let res = await androidApi.edits.insert({
        packageName: packageName
    })
    //get edit id
    let editId = res.data.id
    const res = await androidApi.edits.apks.list({
        editId: editId,
        packageName: packageName
    });
    console.log(`Result ${(JSON.stringify(res))}`);
}
getApksList().catch(console.error);

https://stackoverflow.com/questions/57566862/unable-to-use-google-play-developer-api-even-after-server-to-server-authenticati

 

Unable to use Google Play Developer API even after server to server authentication

I am trying to call Purchases.Subscriptions: get from my local server, but I am getting an error message saying Error: Login Required. I have already created a service account with a role of Project

stackoverflow.com

 

Google Developer Console

  1. "Google Developer Console" > "APIs & Auth" subcategory "APIs" > (api list) "Google Play Android Developer API". Set "STATUS" to "ON".

  2. "APIs & auth" subcategory "Credentials" > "Create new Client ID". Choose "Service account" and create the id.

  3. You should get a P12 key from the browser.

Google Play Developer Console

  1. "Google Play Developer Console" > "Settings" > subcategory "API access".

  2. Make a link to your "Linked Project".

  3. "Service Account" place may be already showing your "Service account" CLIENT ID which made "google developer console".

By default this account is gray indicating that it is not active. So you must activate it and set authority manually.

You should now get a correct response from the API.

https://stackoverflow.com/questions/25481207/error-the-project-id-used-to-call-the-google-play-developer-api-has-not-been-l

 

Error: 'The project id used to call the Google Play Developer API has not been linked in the Google Play Developer Console.'

I am getting the following error while accessing Google Play Developer API using a service account: The project id used to call the Google Play Developer API has not been linked in the Google Play

stackoverflow.com

 

by 나숑 2020. 2. 17. 04:41

text editor에 Host * ServerAliveInterval 120 TCPKeepAlive no를 입력한다. 줄단위로 해석을 하기 때문에 아래와 같이 입력해 줘야 한다.

https://may0301.tistory.com/10

 

Broken Pipe 문제 해결

문제 터미널에서 ssh로 서버 연결후 서버로 작업중 Broken pipe가 뜨면서 서버 연결이 끊긴다. 해결 터미널에 nano ~/.ssh/config 입력하여 text editor를 실행한다. 참고로 "config" 가 있는 위치(/etc/ssh/ssh_..

may0301.tistory.com

 

by 나숑 2020. 2. 17. 02:20

Node.js와 몽고디비 샤딩 클러스터를 연동하여 대량의 데이터를 처리하는 것에 문제가 없었던 탓에, Pymongo 역시 몽고디비 샤딩 클러스터와 연동하는데 별다른 문제가 없을 것으로 예상했으나 다른 점이 존재한다.

일단 단일 몽고 디비 서버에 pymongo로 insert_one을 6만회 이상 수행해도 문제가 없었으나, 샤딩 클러스터를 구성하고 pymongo로 동일한 insert_one을 6만회 이상 수행하려고 하면 7000회 이상 수행을 하면 갑자기 insert_one 함수 부분에서 멈추는 문제가 발생한다.

pymongo를 이용하여 몽고디비에 접속할 때 사용하는 옵션을 바꾸거나, 일부러 디비 커넥션을 매번 연결해본다던지, 세션을 이용한다는 지(샤딩 클러스터에는 세션 이용 불가, 몽고디비 4.2부터 가능하다는 것 같은데 현재 4.0을 세팅해놓아서 포기), 일부러 딜레이를 주는 등 다양하게 테스트를 해보았으나, 계속 임의의 회차에서 멈춰버리는 문제가 계속 발생했다.

Node.js에서는 문제 없이 처리했던 것을 감안하여, 동기 방식으로 처리되는 pymongo의 문제가 아닌지 의심하고 motor와 asyncio를 이용하여 비동기 방식으로 insert를 수행하니 깔끔하게 처리 완료. Python으로 몽고디비 샤딩 클러스터를 연동하여 사용하는 경우가 많을텐데, 이렇게 레퍼런스가 없는 것은 의아함.

https://motor.readthedocs.io/en/stable/tutorial-asyncio.html

 

Tutorial: Using Motor With asyncio — Motor 2.1.0 documentation

A guide to using MongoDB and asyncio with Motor. You can learn about MongoDB with the MongoDB Tutorial before you learn Motor. Using Python 3.4 or later, do: $ python3 -m pip install motor This tutorial assumes that a MongoDB instance is running on the def

motor.readthedocs.io

 

아래는 밤새 삽질시에 참고했던 레퍼런스들...

https://docs.mongodb.com/manual/core/retryable-writes/

 

Retryable Writes — MongoDB Manual

Retryable Writes Retryable writes allow MongoDB drivers to automatically retry certain write operations a single time if they encounter network errors, or if they cannot find a healthy primary in the replica sets or sharded cluster. Prerequisites Retryable

docs.mongodb.com

https://api.mongodb.com/python/current/faq.html

 

Frequently Asked Questions — PyMongo 3.9.0 documentation

PyMongo is not fork-safe. Care must be taken when using instances of MongoClient with fork(). Specifically, instances of MongoClient must not be copied from a parent process to a child process. Instead, the parent process and each child process must create

api.mongodb.com

https://api.mongodb.com/python/current/api/pymongo/collection.html

 

collection – Collection level operations — PyMongo 3.9.0 documentation

collection – Collection level operations Collection level utilities for Mongo. pymongo.ASCENDING = 1 Ascending sort order. pymongo.DESCENDING = -1 Descending sort order. pymongo.GEO2D = '2d' Index specifier for a 2-dimensional geospatial index. pymongo.GEO

api.mongodb.com

https://api.mongodb.com/python/current/api/pymongo/client_session.html

 

client_session – Logical sessions for sequential operations — PyMongo 3.9.0 documentation

client_session – Logical sessions for sequential operations Logical sessions for ordering sequential operations. Requires MongoDB 3.6. Causally Consistent Reads with client.start_session(causal_consistency=True) as session: collection = client.db.collectio

api.mongodb.com

https://stackoverflow.com/questions/43073956/pymongo-errors-bulkwriteerror-batch-op-errors-occurred-mongodb-3-4-2-pymongo

 

pymongo.errors.BulkWriteError: batch op errors occurred (MongoDB 3.4.2, pymongo 3.4.0, python 2.7.13)

I am migrating several hundred million tweets of the format {'id_str': , 'created_at': , 'text': } from text files into MongoDB using pymongo. A collection is created for each user to store his/her

stackoverflow.com

 

by 나숑 2020. 2. 13. 16:49

 

https://developers.google.com/android-publisher/authorization

 

Authorization  |  Google Play Developer API  |  Google Developers

This section contains instructions specific to the Google Play Developer API. See the full OAuth2 documentation for more details. Initial configuration Access to the Google Play Android Developer API is authenticated using the OAuth 2.0 Web Server flow. Be

developers.google.com

https://blog.wky.kr/40

 

[Node.js] google oauth 인증 (구글 로그인)

Node.js에서 google oauth 인증하는 방법이다. passport를 사용하는 방법이 있지만 passport는 사용해보니 무조건 session을 이용해야 했다.(아닐 수도 있음.) 이 글은 passport를 사용하지 않는 방법이다. 1.pass..

blog.wky.kr

var express = require('express');

var app = express();

 

const { google } = require('googleapis');

var googleClient = require('./config/google.json');

 

const googleConfig = {

  clientId: googleClient.web.client_id,

  clientSecret: googleClient.web.client_secret,

  redirect: googleClient.web.redirect_uris[0]

};

const scopes = [

  'https://www.googleapis.com/auth/plus.me'

];

const oauth2Client =new google.auth.OAuth2(

  googleConfig.clientId,

  googleConfig.clientSecret,

  googleConfig.redirect

);

const url = oauth2Client.generateAuthUrl({

  access_type:'offline',

  scope: scopes

});

 

function getGooglePlusApi(auth) {

  return google.plus({ version:'v1', auth });

}

 

asyncfunction googleLogin(code) {

  const { tokens } = await oauth2Client.getToken(code);

  oauth2Client.setCredentials(tokens);

  oauth2Client.on('tokens', (tokens) => {

    if(tokens.refresh_token){

      console.log("리프레시 토큰 :", tokens.refresh_token);

    }

    console.log("액세스 토큰:", tokens.access_token);

  });

  const plus = getGooglePlusApi(oauth2Client);

  const res = await plus.people.get({ userId:'me' });

  console.log(`Hello ${res.data.displayName}! ${res.data.id}`);

  return res.data.displayName;

}

app.get('/login',function (req, res) {

  res.redirect(url);

});

app.get("/auth/google/callback", asyncfunction (req, res) {

 

  const displayName = await googleLogin(req.query.code);

  console.log(displayName);

 

  res.redirect("http://localhost:3000");

});

app.get('/',function (req, res) {

  res.send('Hello World!');

  console.log("로그인 해서 홈으로 돌아옴");

});

app.listen(3000,function () {

  console.log('Example app listening on port 3000!');

});

https://developers.google.com/android-publisher/api-ref/edits/apks/upload

 

Edits.apks: upload  |  Google Play Developer API  |  Google Developers

Note: Requires authorization. This method supports an /upload URI and accepts uploaded media with the following characteristics: Maximum file size: 1GB Accepted Media MIME types: application/octet-stream , application/vnd.android.package-archive Request HT

developers.google.com

http://frontendcollisionblog.com/javascript/2015/12/26/using-nodejs-to-upload-app-to-google-play.html

 

Using node.js to upload your app to Google Play

If you're developing a hybrid mobile app, you may want to stick with node.js to upload your app to the Google Play Store. However, Google's node.js client is still in "alpha", and documentation is very limited. This post gives information about basic setup

frontendcollisionblog.com

https://github.com/googleapis/google-api-nodejs-client

 

googleapis/google-api-nodejs-client

Google's officially supported Node.js client library for accessing Google APIs. Support for authorization and authentication with OAuth 2.0, API Keys and JWT (Service Tokens) is included. - go...

github.com

 

by 나숑 2020. 2. 10. 06:32

https://velog.io/@jungsw586/React-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-%EC%84%B8%ED%8C%85%ED%95%98%EA%B8%B0-1

 

React 개발환경 세팅하기 - 1. React 프로젝트 생성

세상에서 가장 간단하고 빠른 리액트 프로젝트 시작방법 1. 터미널을 켭니다. 2. 터미널에서 리액트 프로젝트를 생성할 디렉토리로 이동해 줍니다. 3. 터미널에 다음의 명령어를 입력합니다. *my-app 위치에 희망하는 디렉토리명을 입력해주어도 됩니다. *npm install -g 이용해 이미 글로벌로 react-create-app을 설치해놓은 경우는 ...

velog.io

https://github.com/reactivestack/cookies/tree/master/packages/react-cookie

 

reactivestack/cookies

Load and save cookies within your React application - reactivestack/cookies

github.com

https://ko.reactjs.org/docs/forms.html

 

폼 – React

A JavaScript library for building user interfaces

ko.reactjs.org

https://alligator.io/react/axios-react/

 

Using Axios with React

Axios is an easy to use HTTP client. Learn how to use it within your React applications.

alligator.io

https://www.robinwieruch.de/react-event-handler

 

React Event Handlers: onClick, onChange ... - RWieruch

Learn about React's event handlers and how to use them for onClick (button) and onChange (events) ...

www.robinwieruch.de

 

by 나숑 2020. 2. 10. 04:14

 

https://medium.com/kanssfer-consulting/testing-expressjs-rest-api-with-mocha-and-chai-90bf4178f15e

 

Testing ExpressJS REST API with Mocha and Chai

ExpressJS is the most famous Node.js framework for creating Web Applications and REST API or so-called Micro Services. It provides a…

medium.com

 

https://create-react-app.dev/docs/running-tests/

 

Create React App · Set up a modern web app by running one command.

> Note: this feature is available with `react-scripts@0.3.0` and higher.

create-react-app.dev

https://www.freecodecamp.org/news/testing-react-hooks/

 

How to Test React Components: the Complete Guide

When I first started learning to test my apps back in the day, I would get very frustrated with the different types, styles and technologies used for testing, along with the disbanded array of blog posts, tutorials and articles. I found this to be true as

www.freecodecamp.org

https://spectrum.chat/testing-library/help/simple-fireevent-click-not-working~1f38c1b0-b152-4b43-a546-3f5084eacbd6

 

Simple fireEvent.click not working · Testing Library

Hi, I have a dead simple click handler test which is not working. Component Test This results in Jest thinking that mockOnClick has not been called. The result…

spectrum.chat

https://testing-library.com/docs/react-testing-library/example-intro

 

Testing Library · Simple and complete testing utilities that encourage good testing practices

Simple and complete testing utilities that encourage good testing practices

testing-library.com

https://thoughtbot.com/blog/good-things-come-to-those-who-await

 

Good Things Come to Those Who Await

How using async/await can make your async JavaScript code clearer.

thoughtbot.com

 

by 나숑 2020. 2. 10. 04:11

AWS의 ElastiCache(Redis)를 로컬에서 접속을 하려고 하니, 정상적인 연결이 되지 않아 찾아보니 ElastiCache는 같은 VPC 내부에서만 접속이 가능하다는 것을 알게되었다. 아마도 RDS나 MongoDB와는 달리 상대적으로 보안이 취약해서인 듯.

RDS와는 다르게, ElastiCache 는 같은 VPC 내부에서만 direct하게 접속이 가능하다. 따라서, AWS 외부의 컴퓨터 (ex: 집 컴퓨터)에서는 물론이고, AWS의 다른 VPC의 EC2에서도 direct 하게 접속되지 않는다. 따라서, AWS 외부에서 접속하고 싶다면, 같은 VPC 내에 EC2 를 하나 만들고(또는 redis node 를 시작할 때, 원래 존재하던 EC2와 같은 VPC 를 사용하도록 설정한다.), 해당 EC2에 ssh 로 접속한 후, 다시 해당 EC2를 거쳐서 telnet 으로 접속한다. EC2는 계속 terminate 되고 다시 생성되면서 VPC가 바뀌므로, redis의 subnet 을 필요할 때마다 바꿔주면서 접속한다.

https://jjangga0214.gitbooks.io/spring-boot/redis/elasticache-redis.html

 

ElastiCache : redis · Spring Boot

No results matching ""

jjangga0214.gitbooks.io

덕분에 기존에 이를 감안하지 않고 다른 VPC 기반의 EC2 인스턴스를 생성해서 사용했다면, 아쉽게도 낭패! 이런 경우 ElastiCache가 속한 VPC로 이동시켜야 한다. 아니면 새로 생성하는 인스턴스는 이를 감안하여 반드시 접속이 가능한 VPC 및 서브넷으로 지정해야 한다.

https://aws.amazon.com/ko/premiumsupport/knowledge-center/move-ec2-instance/

 

EC2 인스턴스를 다른 서브넷, 가용 영역 또는 VPC로 이동

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 다른 서브넷, 가용 영역 또는 Virtual Private Cloud(VPC)로 이동하거나 복사하려고 합니다. 어떻게 해야 합니까?

aws.amazon.com

 

by 나숑 2020. 2. 4. 00:26

1. react-native 설치 및 프로젝트 생성

$ npm install -g react-native-cli

$ react-native init TestProject

$ cd TestProject

$ npm install

https://github.com/nashorn74/TestProject

 

nashorn74/TestProject

Contribute to nashorn74/TestProject development by creating an account on GitHub.

github.com

 

2. Cocoa Pod 설치 (iOS용)

$ cd ios

$ pod install

$ cd ..

https://stackoverflow.com/questions/56916798/react-rctbridgedelegate-h-file-not-found

 

React/RCTBridgeDelegate.h' file not found

I have created a new project called auth using react-native init auth at terminal.When i tried to run the project using react-native run-ios. The build failed and gave a error 'React/RCTBridgeDeleg...

stackoverflow.com

 

3. ios 앱 빌드 및 실행

$ react-native run-ios

* Android Studio와 달리 XCode에서 직접 빌드 및 실행을 할 수 있다.

 

https://yuddomack.tistory.com/entry/1React-Native-%EC%84%A4%EC%B9%98%EC%99%80-%EC%8B%A4%ED%96%89hello-world

 

1.React Native 설치와 실행(hello world)

지난 시간에는 꿀잼 리액트의 매력을 나열해봤습니다. 본디 React.js부터 시작하는게 순서가 아니겠나 싶지만 현재 React Native 프로젝트를 진행중이기 때문에 까먹지 않기 위해 React Native의 시작부터 디자인..

yuddomack.tistory.com

https://woolbro.tistory.com/59

 

[React-Native] React-Native 입문기 - iOS, Android 설치 및 실행

안녕하세요~~!! 예전부터 이슈였지만, 최근에야 제가 좀 보게 된 React-Native에 대해서 천천히 포스팅 해보려고 합니다. 설치와 실행기, 기본적인 부분을 공부하면서 포스팅 하려고 합니다!! 기회가 된다면, 프로..

woolbro.tistory.com

https://g6ling.gitbooks.io/react-native-tutorial-korean/react_native_inspector.html

 

React Native Inspector · react-native-tutorial-korean

No results matching ""

g6ling.gitbooks.io

https://facebook.github.io/react-native/docs/getting-started

 

React Native · A framework for building native apps using React

A framework for building native apps using React

facebook.github.io

 

by 나숑 2020. 2. 3. 03:00

1. react-native 설치 및 프로젝트 생성

$ npm install -g react-native-cli

$ react-native init TestProject

$ cd TestProject

$ npm install

https://github.com/nashorn74/TestProject

 

nashorn74/TestProject

Contribute to nashorn74/TestProject development by creating an account on GitHub.

github.com

 

2. 환경 변수 설정 (안드로이드용)

windows의 경우 내컴퓨터 - 속성 - 고급 시스템설정 - 환경변수 로 들어가서 시스템 변수에 '변수이름 - ANDROID_HOME 변수 값 - C:\sdk의 경로' 를 입력하면 된다.

mac의 경우 커맨드 창에서 vi ~/.bash_profile을 입력하신 후, 'export ANDROID_HOME=sdk의 경로' 를 입력하신 뒤 :wq를 입력해서 저장하면 된다.

 

3. 안드로이드 에뮬레이터 설치 및 실행

디바이스를 만들기 위해 Create Virtual Device를 누른다.

 

4. 안드로이드 앱 실행

$ react-native run-android

 

https://yuddomack.tistory.com/entry/1React-Native-%EC%84%A4%EC%B9%98%EC%99%80-%EC%8B%A4%ED%96%89hello-world

 

1.React Native 설치와 실행(hello world)

지난 시간에는 꿀잼 리액트의 매력을 나열해봤습니다. 본디 React.js부터 시작하는게 순서가 아니겠나 싶지만 현재 React Native 프로젝트를 진행중이기 때문에 까먹지 않기 위해 React Native의 시작부터 디자인..

yuddomack.tistory.com

https://woolbro.tistory.com/59

 

[React-Native] React-Native 입문기 - iOS, Android 설치 및 실행

안녕하세요~~!! 예전부터 이슈였지만, 최근에야 제가 좀 보게 된 React-Native에 대해서 천천히 포스팅 해보려고 합니다. 설치와 실행기, 기본적인 부분을 공부하면서 포스팅 하려고 합니다!! 기회가 된다면, 프로..

woolbro.tistory.com

https://g6ling.gitbooks.io/react-native-tutorial-korean/react_native_inspector.html

 

React Native Inspector · react-native-tutorial-korean

No results matching ""

g6ling.gitbooks.io

https://facebook.github.io/react-native/docs/getting-started

 

React Native · A framework for building native apps using React

A framework for building native apps using React

facebook.github.io

https://e2xist.tistory.com/606

 

[안드로이드 Android] (error) execution failed for task ':app:processDebugResources'

개요 execution failed for task ':app:processDebugResources' 안드로이드 에서 이런 오류가 나올 중 일부 경우에 대해서 짧게 기록해둡니다. 본문 app/build.gradle 파일을 열어보면 buildToolsVersion "23.0.3"..

e2xist.tistory.com

https://blog.wky.kr/25

 

React Native 설치 Windows, Android Studio 사용하기.

이 글은 Windows(윈도우) 에서 설치하는 방법이다. 1. Visual Studio Code를 통한 React-Native 프로젝트 개발 2. 안드로이드 스튜디오를 통한 React-Native 실행하는 방법 위 2가지를 다룰 것이다. Expo를 이용한..

blog.wky.kr

 

by 나숑 2020. 2. 3. 02:56
| 1 |