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

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

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

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

1189閲覧

Swift xAuth

gtime

総合スコア51

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2017/03/24 09:52

編集2022/01/12 10:55

http://qiita.com/leafia78/items/5de99ab104ec83cf3a42
この記事を参考にしてSwiftでxAuthするためのものを書いていたのですが、

Swift

1import UIKit 2 3func random() { 4 for _ in 0..<32 { 5 let num = Int(arc4random() % 36) 6 let letter: String = "abcdefghijklmnopqrstuvwxyz0123456789" 7 let randLetter = letter[letter.index(letter.startIndex, offsetBy: String.IndexDistance(num))] 8 print(randLetter, terminator:"") 9 } 10} 11 12func tos (){ 13 let sn:String = "" 14 let pw:String = "" 15 let ck:String = "3nVuSoBZnx6U4vzUxf5w" 16 let cs:String = "Bcs59EFbbsdF6Sl9Ng71smgStWEGwXXKSjYvPVt7qys" 17 let url:String = "https://api.twitter.com/oauth/access_token" 18 19 var params = [ 20 "x_auth_mode":"client_auth", 21 "x_auth_username":sn, 22 "x_auth_password":pw 23 ] 24 25 var oauth = [ 26 "oauth_consumer_key":ck, 27 "oauth_signature_method":"HMAC-SHA1", 28 "oauth_timestamp":NSDate(), 29 "oauth_version":"1.0a", 30 "oauth_nonce":random(), 31 "oauth_token":"" 32 ] as [String : Any] 33 34 var key = [cs, ""] 35 36 var base = (oauth + params) 37 38 var sortedStrArray = base.sorted { $0 < $1 } 39}

36行目の var base = (oauth + params) 配列を連結させる処理や

PHP

1$oauth['oauth_signature'] = base64_encode(hash_hmac( 2 'sha1', 3 implode('&', array_map('rawurlencode', array( 4 'POST', 5 $url, 6 str_replace( 7 array('+', '%7E'), 8 array('%20', '~'), 9 http_build_query($base, '', '&') 10 ), 11 ))), 12 implode('&', array_map('rawurlencode', $key)), 13 true 14)); 15$items = array(); 16foreach ($oauth as $key => $value) { 17 $items[] = urlencode($key) . '="' . urlencode($value) . '"'; 18} 19$header = array( 20 'Authorization: OAuth ' . implode(', ', $items) 21); 22$ch = curl_init(); 23curl_setopt_array($ch, array( 24 CURLOPT_HTTPHEADER => $header, 25 CURLOPT_URL => $url, 26 CURLOPT_POSTFIELDS => http_build_query($params, '', '&'), 27 CURLOPT_POST => true, 28 CURLOPT_RETURNTRANSFER => true, 29 CURLOPT_SSL_VERIFYPEER => false, 30 CURLOPT_ENCODING => 'gzip' 31 )); 32parse_str(curl_exec($ch), $res); 33$res = (object)$res;

この処理をどう書けばいいのかわかりません。
どうかご教授いただけませんでしょうか

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

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

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

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

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

u39ueda

2017/03/24 15:43

36行目と言われましてもどのソースの36行目でしょうか?また、ここもQiitaも行番号が表示されないのでどの行かわからないです。この行がわからないと抜き出してもらえますか?最後に、どう書けばいいのかわからないと言われても困ります。base64の仕方とかPOSTの仕方とかそもそもPHPが何やってるのかよくわからないということなのかなど、明確にしてください。お願いします。
gtime

2017/03/25 11:43

すみません。36行目というのはSwiftの var base = (oauth + params) この部分です。base64やPOSTの仕方はなんとかわかるのですが、この質問の中にあるPHPの部分をPHPで書くにはどうすればいいのかが全く分からずお手上げ状態です。
u39ueda

2017/03/25 15:54

36行目についてはわかりました。その辺のことは質問を編集して書いておいてください。この欄は新たに来た人にはすぐに見えませんので。
gtime

2017/03/26 04:13

わかりました。アドバイスありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問