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

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

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

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

1回答

2488閲覧

mastodonのアプリ認証に失敗する

nebi

総合スコア14

Android

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2017/07/05 12:52

編集2022/01/12 10:55

実現したいこと

androidアプリからブラウザを立ち上げmastodon認証画面に飛び承認をタップさせてアプリに戻ってくるようにしたい

やっていること

client_idとclient_secretを取得するところまではできました。それらを使ってアプリからブラウザを起動させ、
リダイレクトにuri schemeを指定しアプリに戻ってくるという動作を実装しようとしています。

発生してる問題

ブラウザから/oauth/authorizeを叩くと「無効なリダイレクトURIが含まれています」と返ってきます。

試したこと

redirect_uriを"urn:ietf:wg:oauth:2.0:oob"にしたらトークンが表示されました。

ソースと設定ファイル

kotlin

1inner class UserLoginTask internal constructor(private val mEmail: String) : AsyncTask<Void, Void, Boolean>() { 2 override fun doInBackground(vararg params: Void): Boolean? { 3 // client_idとclient_secretを取得 4 } 5 override fun onPostExecute(success: Boolean?) { 6 showProgress(false) 7 if (success) { 8 var url = mDomain + "/oauth/authorize?" + 9 Uri.encode("scope") + "=" + Uri.encode("read write follow") + "&" + 10 Uri.encode("client_id") + "=" + Uri.encode(mClientId) + "&" + 11 Uri.encode("redirect_uri") + "=" + Uri.encode(getString(R.string.redirect_scheme) + "://" + getString(R.string.redirect_host)) + "&" + 12 Uri.encode("response_type") + "=" + Uri.encode("code") 13 var uri = Uri.parse(url) 14 Log.d(getString(R.string.print_tag), uri.toString()) 15 var i = Intent(Intent.ACTION_VIEW,uri) 16 startActivity(i) 17 } 18 else { 19 mInstanceView!!.error = getString(R.string.error_invalid_instance) 20 mInstanceView!!.requestFocus() 21 } 22 } 23}

Androidmanifest.xmlはこうなっています。

xml

1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="jp.hoge.hoge"> 4 5 <uses-permission android:name="android.permission.INTERNET" /> 6 7 <application 8 android:allowBackup="true" 9 android:icon="@mipmap/ic_launcher" 10 android:roundIcon="@mipmap/ic_launcher_round" 11 android:supportsRtl="true" 12 android:theme="@style/AppTheme"> 13 <activity 14 android:name=".SigninActivity"> 15 <intent-filter> 16 <action android:name="android.intent.action.VIEW" /> 17 <category android:name="android.intent.category.DEFAULT" /> 18 <category android:name="android.intent.category.BROWSABLE" /> 19 <data 20 android:scheme="@string/redirect_scheme" 21 android:host="@string/redirect_host" /> 22 </intent-filter> 23 </activity> 24 </application> 25 26</manifest>

strings.xml

xml

1 <string name="redirect_scheme">scheme</string> 2 <string name="redirect_host">host</string>

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

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

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

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

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

guest

回答1

0

リダイレクトURLにPATHが不足してるみたいですが、"/" だけでもつけた方がいいのでは。

うちのアプリだとこんな感じになってました

java

1 // 認証ページURLを作る 2 final String browser_url = "https://" + instance + "/oauth/authorize" 3 + "?client_id=" + Uri.encode( Utils.optStringX( client_info, "client_id" ) ) 4 // この段階では要らない + "&client_secret=" + Uri.encode( Utils.optStringX( client_info, "client_secret" ) ) 5 + "&response_type=code" 6 + "&redirect_uri=" + Uri.encode( REDIRECT_URL ) 7 + "&scope=read write follow" 8 + "&scopes=read write follow" 9 + "&state=" + ( アプリ固有の情報 ) 10 + "&grant_type=authorization_code" 11 // + "&username=" + Uri.encode( user_mail ) 12 // + "&password=" + Uri.encode( password ) 13 + "&approval_prompt=force" 14 // +"&access_type=offline" 15 ;

投稿2017/07/23 23:20

tateeisu

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問