質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

0回答

1342閲覧

AndroidアプリでのGoogleAPIの叩き方

holmirr

総合スコア4

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2019/11/01 05:28

前提・実現したいこと

AndroidでGmailAPIを用いてメール送信をするためのアプリを作成しています。
そのための認証としてOauth2を用いたいと思っています。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

Java

1public class ProfileActivity extends AppCompatActivity { 2 GoogleSignInClient googleSignInClient; 3 private GoogleSignInOptions gso; 4 private GoogleSignInAccount maccount; 5 private String idToken; 6 private Scope scope = new Scope("https://www.googleapis.com/auth/gmail.send"); 7 8 @Override 9 protected void onCreate(@Nullable Bundle savedInstanceState) { 10 super.onCreate(savedInstanceState); 11 setContentView(R.layout.activity_profile); 12 13 14 gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 15 .requestIdToken("Googleconsoleで指定されたWEBクライアントID") 16 .requestScopes(scope) 17 .requestEmail() 18 .build(); 19 20 googleSignInClient = GoogleSignIn.getClient(this, gso); 21 GoogleSignInAccount alreadyloggedAccount = GoogleSignIn.getLastSignedInAccount(this); 22 if(alreadyloggedAccount != null){ 23 maccount = alreadyloggedAccount; 24 idToken = maccount.getIdToken(); 25 Log.d("token", idToken); 26 updateUI(maccount); 27 } 28 else{ 29 Intent signinintent = googleSignInClient.getSignInIntent(); 30 startActivityForResult(signinintent, 101); 31 } 32 33 34 } 35 protected void updateUI(GoogleSignInAccount maccount){ 36 Intent intent = new Intent(this, MainActivity.class); 37 intent.putExtra("account", maccount); 38 startActivity(intent); 39 } 40 41 protected void onActivityResult(int requestcode, int resultcode, Intent data){ 42 super.onActivityResult(requestcode, resultcode, data); 43 44 if(requestcode == 101 && resultcode == RESULT_OK){ 45 try{ 46 Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data); 47 maccount = task.getResult(ApiException.class); 48 idToken = maccount.getIdToken(); 49 Log.d("token", idToken); 50 updateUI(maccount); 51 } 52 catch(ApiException e){ 53 Log.w("test", "signInResult:failed code=" + e.getStatusCode()); 54 } 55 } 56 } 57} 58

試したこと

https://developers.google.com/identity/sign-in/android/sign-in を参考にして、ログインしたアカウントのGoogleSigninAccountインスタンスを取得しました。
そこからgetIdToken()メソッドを用いてtokenを取得できたのですが、APIを使用するためにこのtokenをどう使用するか分かりません。
調べるとbackendserverでの認証が出てくるのですが、これは自分でサーバーを立てて認証するということでしょうか?
基本的な質問で申し訳ないのですが、教えていただきたいです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kakajika

2019/11/12 12:44

APIクライアントはGoogleの提供しているライブラリを使う予定ですか?それとも自前で実装したい感じでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問