Java에서 Android 장치로 액세스 토큰을 가져 오려고합니다.OAuth2에서 액세스 토큰 얻기
먼저 설치된 애플리케이션 (Android)의 클라이언트 ID를 Google API Console에 만들고 액세스 토큰을 요청할 패키지를 설정하고 SHA1 fingerprint입니다.
내가 액세스 토큰을 얻기 위해 OAuth2ForDevices에서 읽었을 때, 나는 처음에 사용자 코드를 얻어야 만합니다. 그래서 CLIENT_ID 및 범위는 다음과 같습니다 : Aquery을 사용하여 POST 요청을 보내려고 :
AQuery aq = new AQuery(activity);
aq.ajax("https://accounts.google.com/o/oauth2/device/code?" +
"scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile" +
"client_id=xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
JSONObject.class,new AjaxCallback<JSONObject>(){
@Override
public void callback(String url, JSONObject traffic_flow, AjaxStatus status) {
publishProgress(traffic_flow.toString());
}
});
문제는 JSONObject traffic_flow
가에 allways 널 것입니다. 나는 또한이를 사용하여 얻을려고 (그러나 나는 이것이 올바른 방법입니다 일을하지 않는) :
authToken = GoogleAuthUtil.getToken(activity, mEmail, "audience:server:client_id:xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com");
,하지만 난 GoogleAuthException
"알"을 얻었다. 사용자 코드를 올바르게 얻으려면 어떻게해야합니까?
편집 : 나는이를 사용하여 인증 토큰을 얻기 위해 마지막으로 할 수 있었다
:
범위는 이후 나는를 보내고있다 Google API Console에서 생성 된 웹 애플리케이션을위한 클라이언트 ID가 (이다String scope = "audience:server:client_id:xxxxxxxxxxxx.apps.googleusercontent.com";
String token = GoogleAuthUtil.getToken(activity, client.getAccountName(), scope);
토큰을 내 웹 사이트에 추가하고 확인하는 것), 클라이언트는 PlusClient입니다 (자세한 내용은 Getting started with Google+).
내가 내 테스트 응용 프로그램에서 토큰을 획득했습니다, 이제 문제는 내가 나의 새로운 응용 프로그램에 코드를 포함하고 싶어 할 때, 나는 다시 추한 예외 얻고 있다는 것입니다 :
com.google.android.gms.auth.GoogleAuthException: Unknown at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
을 모든 이러한 응용 프로그램의 클라이언트 ID가 동일한 프로젝트에 있으면 매니페스트의 사용 권한이 ok (GET_ACCOUNTS,USE_CREDENTIALS,AUTHENTICATE_ACCOUNTS,INTERNET,ACCESS_NETWORK_STATE
) 여야합니다. 그것없이 작동하지 않기 때문에 PlusClient를 만들 때 내가 새 응용 프로그램에서 변경 한 유일한 변화는 어떻게 생각
mPlusClient = new PlusClient.Builder(this, this, this)
.setVisibleActivities("http://schemas.google.com/AddActivity")
.setScopes(Scopes.PLUS_LOGIN, Scopes.PLUS_PROFILE)
.build()
(내 테스트 응용 프로그램에없이 작동 이유를 알고하지 않습니다) 범위를 설정하는 것입니다 있어야 할 곳에 없는?
내가 구글이 약 2 주 전에 API를 좌표에 대한 작업이, 슬프게도이 내 코드는 내 작품 노트북에 점점 하루에 소비해야한다고 생각 당신과 범위를 교체해야
, 나는 목요일까지 나갈 수 없을 것이다. 나는이 기사를 나에게 올바른 방향으로 밀어 넣었다. http://blog.tomtasche.at/2013/05/google-oauth-on-android-using.html 행운을 빌어 요! 코드에 액세스 할 때 체크 인을 시도하고 상기시키기 위해이 질문을 좋아할 것입니다. – Robadob
@Robadob이 기사를 주셔서 감사합니다. – DropDropped
범위 문자열이'oauth2 : https : //www.googleapis.com/auth/glass.timeline https : // www. googleapis.com/auth/userinfo.profile' 나는 내 문제 중 하나라는 것을 상기합니다. – Robadob