まあ、他の誰かがこれを必要とするなら、これが私がやったことです:
ビュー、開始コントローラー、終了コントローラーの 3 つのファイルがあります。
ビューには、次のようなリンクがあります。
<g:link action="registerOnLinkedIn" controller="linkedinProfile" >connect </g:link>
私はこの方法を持っています:
String apiKey =:myKey"
String apiSecret="mySecret"
String callBackUrl="http://localhost:8080/myApp/secure/mySub/success"
def registerOnLinkedIn = {
Token linkedInAccessToken=null;
OAuthService service=new ServiceBuilder()
.provider(LinkedInApi.class)
.apiKey(apiKey)
.apiSecret(apiSecret)
.callback(callBackUrl)
.build();
Token requestToken = service.getRequestToken();
String authUrl = service.getAuthorizationUrl(requestToken);
session['REQUEST_TOKEN'] = requestToken
redirect(url: authUrl)
}
def success ={
String v = params.oauth_verifier
String r= session['REQUEST_TOKEN']
linkedInXmlService.getXmlStream(v,session['REQUEST_TOKEN'])
}
ユーザーがリンクをクリックすると、そのメソッドに送信され、リダイレクト URL が作成されます。リダイレクト URL は、ユーザーがアプリを受け入れることができる、linkedIn の認証ページです。受け入れられると、成功メソッドにリダイレクトされ、サービスにリダイレクトされます。
サービスはベリファイアとトークンを取得し、リンクされた API にリクエストを送信します。その大部分はここにあります:
def apiUrl = "http://api.linkedin.com/v1/people/~:(" +
"id," +
"picture-url," +
"site-standard-profile-request," +
"first-name," +
"date-of-birth," +
"last-name," +
"industry," +
"location," +
"educations," +
"positions:(id,title,summary,start-date,end-date,is-current,company)," +
"skills:(id,skill:(name),proficiency:(level),years:(name))," +
"connections:(id,industry,first-name,last-name,site-standard-profile-request,headline,location,positions,educations,date-of-birth,picture-url,skills:(id,skill:(name),proficiency:(level),years:(name)))" +
")"
public void getXmlStream(String ver, rt)
{
String accessTokenKey=""
String accessTokenSecret=""
String xmlString =""
OAuthService service=new ServiceBuilder()
.provider(LinkedInApi.class)
.apiKey(apiKey)
.apiSecret(apiSecret)
.build();
Verifier v = new Verifier(ver);
Token accessToken = service.getAccessToken(rt, v);
accessTokenSecret = accessToken.secret
accessTokenKey = accessToken.token
OAuthRequest request = new OAuthRequest(Verb.GET, apiUrl);
service.signRequest(accessToken, request); // the access token from step 4
Response response = request.send();
xmlString=response.getBody();
log.debug (xmlString)
processData(xmlString, accessTokenKey, accessTokenSecret)
}