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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

API

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

Q&A

2回答

1568閲覧

Dribble APIを使用する

cshintaku

総合スコア34

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

API

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

0グッド

1クリップ

投稿2019/09/11 08:52

編集2024/01/01 09:56

iOSからDribble APIを使用してタイムラインを表示するアプリを開発しております。

質問内容はDribble APIの利用方法についてです。

公式ドキュメントには

リクエストを行うときは、アプリケーションを登録し、 OAuthで認証する必要がある

とあります。

なのでドキュメントのOAuthの部分を参照しているのですが、最初の

1.ユーザーをリダイレクトして、ドリブルアクセスを要求します。

が、どうすればいいのかがわかりません。

リダイレクトといってもWebページのurlではないですし、パラメーターでclient_idを渡してもどうやら違うようです。

現状はこのようになっております。

static func fetchArticle(completion: @escaping (Article) -> Swift.Void) { let url = "https://dribbble.com/oauth/authorize/client_id" + clientId guard let urlComponents = URLComponents(string: url) else { return } let task = URLSession.shared.dataTask(with: urlComponents.url!) { data, response, error in print("data(data)") guard let jsonData = data else { return } print("jsondata(jsonData)") do { let decoder = JSONDecoder() decoder.dateDecodingStrategy = .iso8601 let articles = try decoder.decode(Article.self, from: jsonData) completion(articles) } catch { print(error.localizedDescription) } } task.resume() }

このアプローチが正しいのかどうかもわからず、何が何やらといった状況です。

アドバイス頂けないでしょうか?

よろしくお願いします。

追記

公式ドキュメントの1.ユーザーをリダイレクトして、ドリブルアクセスを要求します。で、一時コードなるものの発行は確認できました。

その後、アクセストークンと交換する必要があるようなのですが、この部分で止まっております。

止まっているというか、リクエストすると、エラー、データ、レスポンス、いずれも返ってこない状況です。

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

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

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

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

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

t_obara

2019/09/11 09:06

ことセキュリティに関わることに対してよく分からない状況で手を出すことはやめた方がよろしいかと。少なくとも、OAuthについては、次のページをよく読んで理解されてからにしてはいかがでしょうか。そのほうが実装もやり易くなるかと。 https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be
cshintaku

2019/09/11 09:24

ありがとうございます。 教えて頂いた記事がとてもわかりやすく、OAuthの全体像を掴めました。
Ligaciputra

2024/01/01 00:56

⚪︎⚪︎の情報が不足しているため回答が難しいです。 本文を編集して追記いただけますか? Ligaciputra merupakan situs slot gacor judi slot online deposit pulsa terpercaya yang sangat menarik sekali. Link ligaciputra memberikan keuntungan dari segi pembayaran transaksi keuangan menggunakan pulsa dari semua operator seluler di Indonesia. Jelas saja hal tersebut akan membuatkan para player untuk bermain judi slot ligaciputra setiap saat. Pastikan Anda segera bergabung bersama dengan Liga Ciputra untuk memainkan taruhan slot deposit pulsa https://daftarslotonline.com/
guest

回答2

0

Dribble APIはあんまり見ていませんが、
OAuthなら既存のライブラリを使えば、うまくいけば楽ができるかもしれません。

例えばこういったもの。
https://github.com/OAuthSwift/OAuthSwift

一応日本語で説明されている方もいます。
https://techium.hatenablog.com/entry/2017/08/30/075622
※上の記事は古いので最新のOAuthSwiftでは使い方や構文が微妙に変わっているかもしれませんが

ポイントはSafariアプリに一度処理をぶんなげたあと(タスク切換え)、Custom URL Schemeという機構を使って、リダイレクトで自分のアプリに戻ってくるところです。

自分は実際にOAuthしたことがないので、ライブラリの使い方を聞かれてもわかりませんのであしからず・・・

投稿2019/09/12 05:03

takabosoft

総合スコア8356

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

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

0

海外のサイトで少し古めですが、下記がかなり参考になると思います。
https://www.appdesignvault.com/xcode-swift-tutorial-dribbble/

古くて、dribbleのversionが変わったんですね。
みてみると、

https://developer.dribbble.com/v2/oauth/#web-application-flow

にのっとって取得すればいいのではないでしょうか?

内容まで見てみると、
まず、GET https://dribbble.com/oauth/authorizeしろと
パラメーターは xxx と表があって、requiredの記述があるので、
実際には最低でも、
GET https://dribbble.com/oauth/authorize?client_id=[************]
を送らないといけないようです。

そのさきの手順も解説されていますので、よく見てくださいね。
パラメーターの書き方など、わからなければ、下記などで調べてください。
https://qiita.com/Sekky0905/items/dff3d0da059d6f5bfabf

投稿2019/09/12 01:28

編集2019/09/12 02:09
hameji

総合スコア1380

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

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

cshintaku

2019/09/12 01:32

hamejiさん、回答ありがとうございます。 貼って頂いた記事ですがapiのバージョンが古いからか、アクセストークンがある状態から話が進んでいます。 現状はアクセストークンを取得しようとしているところです。 現状を追記していくべきでしたね。 失礼いたしました。
hameji

2019/09/12 01:50 編集

こちらこそ、早とちりしました。 https://developer.dribbble.com/v2/oauth/#non-web-application-flow を見ると、 Non-Web Application Flow のとこに do not support any other authentication methodsと書いてあるので、 iOSのネイティブなアプリでの利用は推奨されていないのではないですか? 強引にできなくはないでしょうが、利用規定違反になるのではないですか?
cshintaku

2019/09/12 05:08

いえ、回答して頂きありがとうございます。 そのあたりどうなのでしょうか? わからないですが、開発を進めてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問