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;
この処理をどう書けばいいのかわかりません。
どうかご教授いただけませんでしょうか
36行目と言われましてもどのソースの36行目でしょうか?また、ここもQiitaも行番号が表示されないのでどの行かわからないです。この行がわからないと抜き出してもらえますか?最後に、どう書けばいいのかわからないと言われても困ります。base64の仕方とかPOSTの仕方とかそもそもPHPが何やってるのかよくわからないということなのかなど、明確にしてください。お願いします。
すみません。36行目というのはSwiftの var base = (oauth + params) この部分です。base64やPOSTの仕方はなんとかわかるのですが、この質問の中にあるPHPの部分をPHPで書くにはどうすればいいのかが全く分からずお手上げ状態です。
36行目についてはわかりました。その辺のことは質問を編集して書いておいてください。この欄は新たに来た人にはすぐに見えませんので。
わかりました。アドバイスありがとうございます。
あなたの回答
tips
プレビュー